Строка DataGridViewCheckBox возвращает ноль, пока флажок не установлен - PullRequest
0 голосов
/ 04 июля 2018

Я создал форму окна с DataGridView и добавил столбец, который будет содержать флажок для каждой строки. DataTable привязывается к DataGridView, а затем добавляется DataGridViewCheckBoxColumn.

Когда моя форма закрыта, я пытаюсь получить значение флажка в каждой строке, но если флажок в строке не был проверен пользователем в какой-либо момент, тогда программа просто возвращает его значение как нулевое, когда я чувствую его должен вернуть false (не проверено). Почему это так и что я могу сделать, чтобы решить эту проблему?

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

1 Ответ

0 голосов
/ 04 июля 2018

Я полагаю, что причина появления пустых значений заключается в том, что вы добавляете новый столбец в таблицу данных после ее привязки к источнику данных. Поэтому он не имеет значения по умолчанию, пока не отмечен.

Вы можете обойти это со следующим небольшим изменением. ConvertTo.Boolean вернет false, когда встретит ноль, тогда как приведение к (bool), которое я считаю Boolean.Parse - нет.

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

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

Надеюсь, что помогает

...