代码之家  ›  专栏  ›  技术社区  ›  Paul Alexander

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

  •  0
  • Paul Alexander  · 技术社区  · 7 年前

    我的.net应用程序有一个问题,我试图从数据表单元格中获取一个值并将其转换为布尔值。
    DataTable绑定到DataGridView,单元格是复选框。
    当我检查这个单元格是否为null时,它返回为notnull。但是,当我尝试获取值时,它不会返回任何内容,也不会将其强制转换为布尔值。

    谢谢你的帮助。

            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)测试时引发异常:

    enter image description here

    1 回复  |  直到 7 年前
        1
  •  1
  •   Code Name Jack    7 年前

    DataGrid单元格是三向复选框。他们不能被铸造到布尔。

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