如何将 DataGridView 与自定义类一起使用并显示复选框

本文关键字:显示 复选框 一起 DataGridView 自定义 | 更新日期: 2023-09-27 18:33:49

这是我的代码:

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 的数据源。问题是,复选框和按钮未显示,因此该字段为空。

如何解决问题?提前谢谢。

问候Chris

如何将 DataGridView 与自定义类一起使用并显示复选框

DataGridView具有复选框和按钮、DataGridViewCheckBoxColumnDataGridViewButtonColumn的现成列类型。

如果将自动生成列设置为 true,则将自动为数据源对象上的每个布尔属性获取一个复选框列。

因此,您的类将如下所示:

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 文章中对此进行了说明。

下面是

有关如何:在 Windows 窗体 DataGridView 单元格中承载控件的简单教程。 它有点过时,但我相信在使用 DataGridView 时提供了一个很好的起点。 不过,这似乎有点吓人-您将需要实现自己的DataGridViewColumnDataGridViewCell