单击复选框前,DataGridViewCheckBox 行 returns 为空

DataGridViewCheckBox row returns null until checkbox is clicked

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

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

//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!");
     }
}

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

您可以通过以下小改动来绕过它。 ConvertTo.Boolean 遇到 null 时会 return false,而我认为是 Boolean.Parse 的 (bool) 则不会。

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

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

希望对您有所帮助