Ячейка флажка DataTable не возвращает ноль, но выдает исключение при попытке привести значение - PullRequest
0 голосов
/ 06 сентября 2018

У меня проблема с моим приложением .net, когда я пытаюсь взять значение из ячейки DataTable и привести его к типу bool.
DataTable связан с DataGridView, а ячейка является CheckBox.
Когда я проверяю, является ли эта ячейка нулевой, она возвращается как ненулевая. Однако когда я пытаюсь получить значение, оно ничего не возвращает и не приводит его к типу bool.

Любая помощь приветствуется.

        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 голосов
/ 06 сентября 2018

Ячейки DataGrid имеют флажок ThreeWay. Они не могут быть приведены к bool.

Попробуй бул? вместо

  bool? testValue=(bool?) dtItems.Rows[e.RowIndex][e.ColumnIndex];    
  if (testValue!=null&&testValue)
  {
     MessageBox.Show("true");
  }
  else
  {
      MessageBox.Show("false");
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...