проверка, если проверена проверка данных dataGridView, терпит неудачу - PullRequest
0 голосов
/ 31 октября 2018

Здесь есть ответ на такой вопрос здесь , но мой вопрос заключается в том, почему при выполнении этого кода не работает , поэтому, пожалуйста, не отмечайте его как "дубликат" этого вопроса

Итак, у меня есть dataGridView и в нем флажок. Поэтому я хочу, чтобы что-то произошло, когда я установил и снял этот флажок, поэтому я делаю:

private void dataGridView2_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
     Trace.WriteLine("Cell Content Click Col: " + e.ColumnIndex + " Row: " + e.RowIndex);

     if(e.ColumnIndex==0) //0 is the column of the checkbox
     {
       Trace.WriteLine("Value:"+  dataGridView2.Rows[e.RowIndex].Cells[e.ColumnIndex].Value);
     }
}

Как видите, я применяю ответ на другой вопрос. Однако в результате, независимо от того, установлен ли я флажок или снят флажок, значение равно всегда ложь.

Я собираюсь попробовать это с CellValidating, чтобы увидеть, получаю ли я лучшие результаты, но как лучше всего проверить, установлен ли флажок или снят флажок с dataGridView?

Ответы [ 2 ]

0 голосов
/ 31 октября 2018
private void dataGridView2_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    Trace.WriteLine("Cell Content Click Col: " + e.ColumnIndex + " Row: " + e.RowIndex);

    if (e.ColumnIndex == 0)
    {
        DataGridViewCheckBoxCell cell = dataGridView2.Rows[e.RowIndex].Cells[e.ColumnIndex] as DataGridViewCheckBoxCell;
        if (cell != null)
        {
            Trace.WriteLine("Value:" + cell.EditingCellFormattedValue);
        }
    }
}
0 голосов
/ 31 октября 2018

Взято из этого ответа по той же ссылке, которую вы разместили в своем вопросе:

После редактирования значений в DataGridView вы должны сначала зафиксировать изменения, чтобы внутренние значения в таблице были корректно обновлены:

private void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
    if (dataGridView1.IsCurrentCellDirty)
    {
        dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
    }
}

Только тогда вы сможете правильно запросить состояние флажка:

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    DataGridView dgv = (DataGridView)sender;

    if (dgv.Rows.Count >= e.RowIndex + 1)
    {
        bool isChecked = (bool)dgv.Rows[e.RowIndex].Cells["CheckColumn"].Value;
        MessageBox.Show(string.Format("Row {0} is {1}", e.RowIndex, isChecked));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...