下面演示如何在 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);
}
}
手机扫一扫
移动阅读更方便
你可能感兴趣的文章