Как определить, какие ячейки в сетке данных проверяются?

Мое представление данных имеет 2 столбца. Столбец 0 содержит флажки в выключенном положении (по умолчанию). Пользователь может установить флажок и изменить состояние или флажок.

Как я могу пройти через и найти те, которые проверены. Вот мой код

try
{
   // This line will cause InvalidCastException
   // Specified cast is not valid.
   if ((bool)(row.Cells[0]).Value || (CheckState)row.Cells[0].Value == CheckState.Checked)
   {
      // Do something
      MessageBox.Show("Checked");
   }
}
catch (NullReferenceException nre)
{
   MessageBox.Show("No Rows Have Been Checked");
}

2 ответа

Решение

Как насчет:

foreach(DataGridViewRow row in dataGridView.Rows){
    if (row.Cells[0].Value != null && (bool)row.Cells[0].Value){
       //checked, do something
    }
}

Смотрите однострочник из этого ответа:

List<DataGridViewRow> list = DataGridView1.Rows.Cast<DataGridViewRow>().Where(k => Convert.ToBoolean(k.Cells[CheckBoxColumn1.Name].Value) == true).ToList();

Это даст вам список всех строк, у которых установлен флажок.

Другие вопросы по тегам