DataGridView和CheckBoxes

时间:2013-05-15 07:23:05

标签: c# checkbox datagridview

我正在创建一个应用程序,其中包含一个带有按钮和datagridview的页面。

数据来自MySQL,人口就是这样完成的:

this.ObjectsTable.Rows.Add(Objects.GetValue(index, 0), 
                           Objects.GetValue(index, 1), 
                           Objects.GetValue(index, 2), 
                           Objects.GetValue(index, 3));

问题:

  

我无法勾选复选框。从字面上看。当我点击它时它就会消失   “按下/打开”状态,但永远不会“检查”。

如何解决这个问题?以及如何获取其复选框已选中的行? 我想创建一个数组,然后遍历它们。

1 个答案:

答案 0 :(得分:1)

首先检查您的DataGridViewEnabled还是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;
}