DataTable复选框单元格不返回null,但在尝试强制转换值时引发异常

时间:2018-09-06 08:37:57

标签: c# winforms datagridview datatable

.net应用程序出现问题,我试图从DataTable单元中获取一个值并将其转换为布尔值。
DataTable绑定到DataGridView,并且单元格是CheckBox。
当我检查该单元格是否为null时,它返回为非null。但是,当我尝试获取该值时,它不返回任何内容,也不会将其强制转换为布尔值。

任何帮助表示赞赏。

        private void dgvItems_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex == 2 || e.ColumnIndex == 3)
            {
                var test = dtItems.Rows[e.RowIndex][e.ColumnIndex];               

                if (test != null)
                {
                    if ((bool)test)
                    {
                        MessageBox.Show("true");
                    }
                    else
                    {
                        MessageBox.Show("false");
                    }
                }
                else
                {
                    MessageBox.Show("null");
                }
            }
        }

在(bool)测试中抛出异常:
System.InvalidCastException:'指定的转换无效。'

enter image description here

1 个答案:

答案 0 :(得分:1)

DataGrid单元格为ThreeWay复选框。无法将它们强制转换为布尔。

尝试布尔?代替

  bool? testValue=(bool?) dtItems.Rows[e.RowIndex][e.ColumnIndex];    
  if (testValue!=null&&testValue)
  {
     MessageBox.Show("true");
  }
  else
  {
      MessageBox.Show("false");
  }