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

C# 如何将DataGridView与自定义类一起使用并显示复选框,c#,datagridview,datasource,C#,Datagridview,Datasource,这是我的密码: 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 ta

这是我的密码:

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;
class SelectionTableEntry
{
公共复选框cbIsChecked{get;set;}
公共表{get;set;}
公共字符串表名{get;set;}
公共按钮btnEditFilter{get;set;}
public SelectionTableEntry(已选中表格、布尔值)
{
这个表=表;
this.TableName=table.Name;
this.cbIsChecked=新建复选框();
this.cbIsChecked.Checked=IsChecked;
this.btnEditFilter=新建按钮();
this.btnEditFilter.Text=“打开”;
}
}
List myList=新列表();
//在用项目填充列表之后
myDataGridView.DataSource=myList;
现在我想使用SelectionTableEntry类型的列表作为DataGridView的数据源。 问题是,复选框和按钮未显示,因此字段为空

我怎样才能解决这个问题?提前谢谢

问候,,
克里斯

这里有一个简单的教程。它有点过时,但我相信它为使用DataGridView提供了一个很好的起点。这可能看起来有点吓人-您需要实现自己的
DataGridViewColumn
DataGridViewCell

以下是一个简单的教程。它有点过时,但我相信它为使用DataGridView提供了一个很好的起点。这可能看起来有点吓人-您需要实现自己的
DataGridViewColumn
DataGridViewCell

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

如果将AutoGenerateColumns设置为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文章中已对此进行了解释。

DataGridView为复选框和按钮提供了开箱即用的列类型,以及

如果将AutoGenerateColumns设置为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文章对此进行了解释。

请提供显示按钮和复选框的代码。很难说这些控件是否被添加到DataGridView中。如果我读对了你的陈述,你听起来好像只是在数据源中使用它,但它不起作用。数据源用于存储数据。您需要自己将这些控件添加到相应的控件集合中。您是否打算将这些控件添加到给定的表中?如果是这样的话,我看不到。我不知道如何在DataGridView中显示控件,这就是为什么我要求一个可能的解决方案。如何在DataGridView中显示它们?标准是使用布尔属性而不是复选框,并添加DataGridViewButtonColumn类型的列。您知道这种方式吗?请提供显示按钮和复选框显示方式的代码。很难说这些控件是否被添加到DataGridView中。如果我读对了你的陈述,你听起来好像只是在数据源中使用它,但它不起作用。数据源用于存储数据。您需要自己将这些控件添加到相应的控件集合中。您是否打算将这些控件添加到给定的表中?如果是这样的话,我看不到。我不知道如何在DataGridView中显示控件,这就是为什么我要求一个可能的解决方案。如何在DataGridView中显示它们?标准是使用布尔属性而不是复选框,并添加DataGridViewButtonColumn类型的列。你知道这种做事方式吗?