DataGridView 动态绑定 CheckBox
阅读原文时间:2023年07月08日阅读:2

下面演示如何在 DataGridView 中动态绑定 CheckBox:

public class Test
{
///

/// 构造器 ///
public Test()
{
InitializeComponent();
//生成全选checkbox
GenerateCheckbox();
}
/// /// 全选按钮的选择事件 ///
///
///
private void checkboxAll_CheckedChanged(object sender, EventArgs e)
{
foreach (DataGridViewRow dr in dataGridView1.Rows)
{
dr.Cells[].Value = ((CheckBox)dataGridView1.Controls.Find("checkboxAll", true)[]).Checked;
}
}

/// <summary>  
/// 生成全选Checkbox  
/// </summary>  
private void GenerateCheckbox()  
{  
    //检查 dataGridView1 中是否至少绑定了一列  
    if (string.IsNullOrEmpty(dataGridView1.Columns\[\].Name))  
        return;

    //DataGridView 中专门用来显示 Checkbox 控件的列对象;dataGridView1 中添加此对象后,绑定数据时就会自动为每行创建一个新的 CheckBox 控件  
    //当然这一步也可以省略,换成直接在 dataGridView1 的 Columns 属性中添加一列,然后将其 ColumnType 设置成 DataGridViewCheckBoxColumn 即可  
    DataGridViewCheckBoxColumn gridViewCheckBoxCol = new DataGridViewCheckBoxColumn  
    {  
        Width = ,  
        HeaderText = "",  
        DefaultCellStyle =  
        {  
            Alignment = DataGridViewContentAlignment.MiddleCenter  
        },  
        ReadOnly = false //若为 true 则无法选择 CheckBox  
    };

    //把 dataGridView1 的第一列设置成 CheckBox 格式的列  
    dataGridView1.Columns.Insert(, gridViewCheckBoxCol);

    //获取 dataGridView1 中表示单元格显示区域的矩形,通过矩形的位置来设置 CheckBox 的相对位置  
    Rectangle rectangle = dataGridView1.GetCellDisplayRectangle(, -, true);  
    rectangle.X = rectangle.Location.X + rectangle.Width + ;  
    rectangle.Y = rectangle.Location.Y + rectangle.Height + ;

    //新建一个用于“全选”的 CheckBox 对象 checkboxAll  
    CheckBox chkOfAll = new CheckBox();  
    chkOfAll.Name = "checkboxAll";  
    chkOfAll.Size = new Size(, );  
    chkOfAll.Location = rectangle.Location;

    //为 checkboxAll 绑定全选事件  
    chkOfAll.CheckedChanged += new EventHandler(checkboxAll\_CheckedChanged);

    //把 checkboxAll 添加到 dataGridView1 中  
    dataGridView1.Controls.Add(chkOfAll);  
}  

}