DataGridViewCheckBox行返回空值,直到单击复选框为止

时间:2018-07-04 12:07:50

标签: c# winforms datagridview datagridviewcolumn datagridviewcheckboxcell

我创建了一个带有DataGridView的Windows窗体,并添加了一个包含每行复选框的列。 将DataTable绑定到DataGridView,然后添加DataGridViewCheckBoxColumn。

当我的表单关闭时,我尝试获取每一行中复选框的值,但是如果用户在任何时候都没有选中该行中的复选框,那么程序在感觉到它时只会将其值返回为null应该返回false(未检查)。 为什么会这样,我该怎么解决?

//add checkbox column
DataGridViewCheckBoxColumn mCheckboxColumn = new DataGridViewCheckBoxColumn();
mCheckboxColumn.Name = "chk";
mCheckboxColumn.HeaderText = "checkbox";       
dgv.Columns.Add(mCheckboxColumn);



//looping through each row
foreach (DataGridViewRow row in dgv.Rows)
{
     if ((bool)row.Cells["chk"].Value == true)
     {
          MessageBox.Show("checked!");
     }
}

1 个答案:

答案 0 :(得分:1)

我相信您遇到空值的原因是因为您在将新列绑定到数据源之后将新列添加到数据网格。因此,未选中时它没有默认值。

您可以通过以下一些小的改动来解决它。当遇到一个null时,ConvertTo.Boolean将返回false,而我认为是Boolean.Parse的强制转换为(bool)。

foreach (DataGridViewRow row in dataGridView1.Rows)
{
    DataGridViewCheckBoxCell cell = (DataGridViewCheckBoxCell)row.Cells["chk"];

    if (Convert.ToBoolean(cell.Value))
    {
        MessageBox.Show("checked!");
    }
}

希望有帮助