我正在创建一个应用程序,其中包含一个带有按钮和datagridview的页面。
数据来自MySQL,人口就是这样完成的:
this.ObjectsTable.Rows.Add(Objects.GetValue(index, 0),
Objects.GetValue(index, 1),
Objects.GetValue(index, 2),
Objects.GetValue(index, 3));
问题:
我无法勾选复选框。从字面上看。当我点击它时它就会消失 “按下/打开”状态,但永远不会“检查”。
如何解决这个问题?以及如何获取其复选框已选中的行? 我想创建一个数组,然后遍历它们。
答案 0 :(得分:1)
首先检查您的DataGridView
是Enabled
还是ReadOnly
,如果这不能帮助检查Column
是否只读。
问题答案的第二部分取决于您是否想要立即知道已检查过哪个CheckBox
。是的然后使用此事件:
private void GridCellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex < 0 || e.ColumnIndex < 0)
{
return;
}
if (dataGridView1[e.ColumnIndex, e.RowIndex] is DataGridViewCheckBoxCell)
{
var check = (dataGridView1[e.ColumnIndex, e.RowIndex].Value as bool?) ?? false;
if (check)
{
//checked
}
}
}
或者只是遍历所有行并使用复选框检查单元格的值:
foreach (DataGridViewRow row in dataGridView1.Rows)
{
var check = (row.Cells[0].Value as bool?) ?? false;
}