C# 绑定列表<;类别>;到DataGridView

C# 绑定列表<;类别>;到DataGridView,c#,winforms,C#,Winforms,我需要您帮助我如何将列表绑定到DataGridView。我试图使用绑定列表,但它仍然无法在我的gridview中显示记录。我尝试使用列表,但仍然不起作用 下面是我使用的代码: public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) {

我需要您帮助我如何将列表绑定到DataGridView。我试图使用
绑定列表
,但它仍然无法在我的gridview中显示记录。我尝试使用
列表
,但仍然不起作用

下面是我使用的代码:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        ToolClientController ctrl = new ToolClientController();
        IpAddressTextbox.Text = ctrl.GetIPv4Config();
        PortNumberTextbox.Text = ctrl.GetPortNumber();
    }

    private void BrowseButton_Click(object sender, EventArgs e)
    {
        DialogResult result = openFileDialog1.ShowDialog();
        if (result == DialogResult.OK)
        {
            ToolMsgFileTextbox.Text = openFileDialog1.FileName;
        }
    }

    private void UploadButton_Click(object sender, EventArgs e)
    {
        if (string.IsNullOrWhiteSpace(ToolMsgFileTextbox.Text))
        {
            FileTypeError.SetError(UploadButton, "Please enter filename.");
            return;
        }

        if (!openFileDialog1.FileName.Contains(".txt"))
        {
            FileTypeError.SetError(UploadButton, "File should be in .txt");
            return;
        }

        ToolClientController ctrl = new ToolClientController();            

        List<ToolMessages> test = new List<ToolMessages>();
        ToolMessages tool = new ToolMessages();
        tool.IsPass = true;
        tool.ToolMessageReply = string.Empty;
        tool.ToolMessageRequest = "x";
        test.Add(tool);

        MessageGridViews.AutoGenerateColumns = false;

        DataGridViewTextBoxColumn col1 = new DataGridViewTextBoxColumn();
        col1.DataPropertyName = "ToolMessageRequest";
        col1.HeaderText = "Request";            
        MessageGridViews.Columns.Add(col1);

        BindingList<ToolMessages> bind = new BindingList<ToolMessages>(test);

        MessageGridViews.VirtualMode = true;
        MessageGridViews.DataSource = bind; 
    }
}
公共部分类表单1:表单
{
公共表格1()
{
初始化组件();
}
私有void Form1\u加载(对象发送方、事件参数e)
{
ToolClientController ctrl=新建ToolClientController();
IpAddressTextbox.Text=ctrl.GetIPv4Config();
PortNumberTextbox.Text=ctrl.GetPortNumber();
}
私有无效浏览按钮单击(对象发送者,事件参数e)
{
DialogResult=openFileDialog1.ShowDialog();
if(result==DialogResult.OK)
{
ToolMsgFileTextbox.Text=openFileDialog1.FileName;
}
}
私有无效上载按钮\单击(对象发送者,事件参数e)
{
if(string.IsNullOrWhiteSpace(ToolMsgFileTextbox.Text))
{
SetError(上传按钮,“请输入文件名”);
回来
}
如果(!openFileDialog1.FileName.Contains(“.txt”))
{
SetError(上传按钮,“文件应为.txt格式”);
回来
}
ToolClientController ctrl=新建ToolClientController();
列表测试=新列表();
ToolMessages工具=新的ToolMessages();
tool.IsPass=true;
tool.ToolMessageReply=string.Empty;
tool.ToolMessageRequest=“x”;
测试。添加(工具);
MessageGridViews.AutoGenerateColumns=false;
DataGridViewTextBoxColumn col1=新的DataGridViewTextBoxColumn();
col1.DataPropertyName=“ToolMessageRequest”;
col1.HeaderText=“请求”;
MessageGridViews.Columns.Add(col1);
BindingList绑定=新绑定列表(测试);
MessageGridViews.VirtualMode=true;
MessageGridViews.DataSource=bind;
}
}

基于您的代码,我准备了简单的WinForms应用程序:

public Form1()
{
    InitializeComponent();
    List<ToolMessages> test = new List<ToolMessages>();
    ToolMessages tool = new ToolMessages();
    tool.IsPass = true;
    tool.ToolMessageReply = string.Empty;
    tool.ToolMessageRequest = "x";
    test.Add(tool);

    dataGridView1.AutoGenerateColumns = false;

    DataGridViewTextBoxColumn col1 = new DataGridViewTextBoxColumn();
    col1.DataPropertyName = "ToolMessageRequest";
    col1.HeaderText = "Request";
    dataGridView1.Columns.Add(col1);

    BindingList<ToolMessages> bind = new BindingList<ToolMessages>(test);

    dataGridView1.DataSource = bind;
    dataGridView1.Show();
}
一切似乎都很好。。。数据绑定到网格,输出如下所示:


这正是我希望看到的,因此我看不出您的解决方案有任何真正的问题,除非您发布更大的代码,我可以重现您遇到的问题。

我将编辑我的问题,因为我仍然无法显示记录。我刚刚发现问题是由我的实体造成的。我设置了
[Browsable(true)]
,它就工作了。我的理解正确吗?你点击
上传按钮,你没有看到我下面回答中的输出,即“请求”列的值为“x”?另外,如果您根本不使用它,您在
UploadButton\u单击
ToolClientController
中创建
ToolClientController有什么用?另一方面,您是否尝试过将断点放入
UploadButton\u单击
方法以实际查看发生了什么?您的代码是否得到执行?
private void InitializeComponent()
{
    this.dataGridView1 = new System.Windows.Forms.DataGridView();
    ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
    this.SuspendLayout();
    // 
    // dataGridView1
    // 
    this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
    this.dataGridView1.Location = new System.Drawing.Point(560, 57);
    this.dataGridView1.Name = "dataGridView1";
    this.dataGridView1.Size = new System.Drawing.Size(240, 150);
    this.dataGridView1.TabIndex = 1;
    // 
    // Form1
    // 
    this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
    this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
    this.ClientSize = new System.Drawing.Size(967, 399);
    this.Controls.Add(this.dataGridView1);
    this.Name = "Form1";
    this.Text = "Form1";
    ((System.ComponentModel.ISupportInitialize)(this.gridControl1)).EndInit();
    ((System.ComponentModel.ISupportInitialize)(this.gridView1)).EndInit();
    ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
    this.ResumeLayout(false);
}