Программно отмеченные флажки в DGV не отображаются как отмеченные - PullRequest
0 голосов
/ 19 февраля 2020

Я использую сетку данных для некоторых частей управления правами пользователей. Для каждого права в DGV есть как минимум один столбец флажков. Эти флажки создаются с помощью DataGridViewCheckBoxColumns

Они могут быть отмечены и сняты либо в обычном режиме, либо с помощью контекстного меню для массовой (не) проверки (отметьте все, снимите флажки все, отмените все). Естественно, что массовая (не) -проверка выполняется программно. Пример фрагмента кода "reverse all":

foreach (DataGridViewRow dr in dgv.Rows)
{
    dr.Cells[gridcol.Index].Value = !Convert.ToBoolean(dr.Cells[gridcol.Index].Value);
}

При очень определенных c условиях состояние флажка не обновляется sh должным образом:

  • Left- щелкните ячейку с флажком в DGV (необязательно (не обязательно) проверять флажок в процессе)
  • Нажмите кнопку контекстного меню, которая изменит содержимое ячейки, на которую щелкнули,

статус проверки остается неизменным. Однако, если вы щелкнете в другом месте, чтобы выбрать другую строку, по-видимому, состояние проверки обновится.

Я попытался программно очистить выделение и выбрать другие строки, но это не решает проблему - это кажется, что вам действительно нужно щелкнуть по другой строке, чтобы решить указанную проблему.

dgv.ClearSelection();
dgv.Rows[2].Selected = true; //Row 2 is just a random one for the sake of testing it
tbCtrlRights_SelectedIndexChanged(sender, e);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...