我有一个像这张图片一样的datagridview:
我设置ColumnsHeaderVisible
为False
,第一列是DataGridViewCheckBoxColumn
。
问题是我可以通过单击鼠标取消选中所有行,但第一行不可更改。
我无法选中/取消选中表格的第一行。
我想再说一遍,我不能用鼠标点击来做到这一点。
问题是什么?
谢谢..
我有一个像这张图片一样的datagridview:
我设置ColumnsHeaderVisible
为False
,第一列是DataGridViewCheckBoxColumn
。
问题是我可以通过单击鼠标取消选中所有行,但第一行不可更改。
我无法选中/取消选中表格的第一行。
我想再说一遍,我不能用鼠标点击来做到这一点。
问题是什么?
谢谢..
在数据边界之后,您应该在 DataBindingComplete 事件中调用
dataGridView.ClearSelection();
编辑:
您可以遍历 DataBindingCompleteEvent 中的所有行
private void dataGridView_DataBindingComplete(object sender,
DataGridViewBindingCompleteEventArgs e)
{
for (int i = 0; i < dataGridView.Rows.Count - 1; i++)
{
dataGridView.Rows[i].Cells[0].Value = false;
}
}
private void Form1_Load(object sender, EventArgs e)
{
dataGridView1.CellContentClick += new DataGridViewCellEventHandler(dataGridView1_CellContentClick);
}
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 0)
{
dataGridView1[0, e.RowIndex].Value = !(bool)dataGridView1[0, e.RowIndex].Value;
//Or
//bool IsBool = false;
//IsBool = bool.TryParse(dataGridView1[0, e.RowIndex].EditedFormattedValue.ToString(), out IsBool);
//if (IsBool)
// dataGridView1[0, e.RowIndex].Value = IsBool;
}
}
编辑:将代码放入CellClick event
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 0)
{
//Find primaykey from dataTable
DataRow[] Rows = dataTable.Select("Id = '" + dataGridView1[1, e.RowIndex].EditedFormattedValue.ToString() + "'");
Rows[0]["CheckBoxes"] = !bool.Parse(Rows[0]["CheckBoxes"].ToString());
}
}