Я использую сетку данных для некоторых частей управления правами пользователей. Для каждого права в 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);