1

这是我的代码:

class SelectionTableEntry
{
    public CheckBox cbIsChecked { get; set; }

    public Table Table { get; set; }

    public string TableName { get; set; }

    public Button btnEditFilter { get; set; }

    public SelectionTableEntry(Table table, bool IsChecked)
    {
        this.Table = table;
        this.TableName = table.Name;
        this.cbIsChecked = new CheckBox();
        this.cbIsChecked.Checked = IsChecked;
        this.btnEditFilter = new Button();
        this.btnEditFilter.Text = "Open";
    }
}

List<SelectionTableEntry> myList = new List<SelectionTableEntry>();

// after filling the list with items
myDataGridView.DataSource = myList;

现在我想使用具有 SelectionTableEntry 类型的列表作为我的 DataGridView 的数据源。问题是 CheckBox 和 Button 没有显示,所以该字段是空的。

我该如何解决这个问题?提前致谢。

问候,克里斯

4

2 回答 2

1

DataGridView复选框和按钮具有开箱即用的列类型,DataGridViewCheckBoxColumnDataGridViewButtonColumn

如果您将 AutoGenerateColumns 设置为 true,您将自动为 DataSource 对象上的每个布尔属性获取一个复选框列。

所以你的班级看起来像:

class SelectionTableEntry
{
    public bool cbIsChecked { get; set; }    
    public Table Table { get; set; }    
    public string TableName { get; set; }    
    public string btnEditFilter { get; set; }

    public SelectionTableEntry(Table table, bool IsChecked)
    {
        this.Table = table;
        this.TableName = table.Name;
        this.cbIsChecked = IsChecked;
    }
}

您不能自动生成按钮列,您需要自己添加它们,如下所示:

// Add a button column. 
DataGridViewButtonColumn buttonColumn = 
    new DataGridViewButtonColumn();
buttonColumn.HeaderText = "";
buttonColumn.Name = "Open";
buttonColumn.Text = "Open";
buttonColumn.UseColumnTextForButtonValue = true;

dataGridView1.Columns.Add(buttonColumn);

您需要做更多的事情来对按钮点击做出反应,但这在 MSDN 文章中都有解释。

于 2012-05-11T15:31:08.140 回答
0

这是关于如何:在 Windows 窗体 DataGridView 单元格中托管控件的简单教程。它有点过时,但我相信在使用 DataGridView 时提供了一个很好的起点。不过,这可能看起来有点吓人——您将需要实现自己的DataGridViewColumnDataGridViewCell.

于 2012-05-11T15:04:45.977 回答