checkbox取消全选
时间: 2023-08-31 11:07:10 浏览: 82
在DataGridView中实现全选功能可以通过以下步骤实现:
1. 在DataGridView中添加一个列,用于显示CheckBox。
2. 在DataGridView的CellContentClick事件中,判断点击的列是否为CheckBox列,如果是,则根据CheckBox的选中状态来设置所有行的CheckBox的选中状态。
3. 在DataGridView的CellPainting事件中,绘制CheckBox列的CheckBox。
以下是示例代码:
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == && e.RowIndex == -1) // 点击了全选CheckBox列的标题
{
bool isChecked = (bool)dataGridView1.Rows[].Cells[].EditedFormattedValue;
foreach (DataGridViewRow row in dataGridView1.Rows)
{
row.Cells[].Value = isChecked;
}
}
}
private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
if (e.ColumnIndex == && e.RowIndex == -1) // 绘制全选CheckBox列的标题
{
e.PaintBackground(e.CellBounds, true);
e.Graphics.DrawString("全选", e.CellStyle.Font, Brushes.Black, e.CellBounds, new StringFormat() { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center });
e.Handled = true;
}
else if (e.ColumnIndex == && e.RowIndex >= ) // 绘制CheckBox列的CheckBox
{
e.PaintBackground(e.CellBounds, true);
bool isChecked = (bool)e.Value;
Point pt = new Point(e.CellBounds.X + (e.CellBounds.Width - 16) / 2, e.CellBounds.Y + (e.CellBounds.Height - 16) / 2);
e.Graphics.DrawImage(isChecked ? Properties.Resources.Checked : Properties.Resources.Unchecked, pt);
e.Handled = true;
}
}
阅读全文