У меня есть DataGridView
с двумя столбцами флажков. Когда все строки на обоих из них отмечены, я хочу очистить галочки. Сетка заполняется из DataTable. Вот как это работает:Обновить значения ячейки DataGridView сразу
if (bothColumnsAreChecked)
{
DataRow first = SelectedFirstItems.First();
DataRow second = SelectedSecondItems.First();
// stuff...
first["IsCheckedFirst"] = false;
second["IsCheckedSecond"] = false;
}
Согласно this, я изменил код, чтобы уволить CellValueChanged
событие сразу же после нажатия на флажок, не проигрывая фокус:
void brandsGridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
brandsGridView.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
Проблема заключается в том, что, после того, как очистка галочек, одна из строк по-прежнему выбрана (потому что я просто нажал на флажок в этой строке), и галочка в этой строке все еще видна - она не исчезает, пока я не отменим выбор строки. Как мне это достичь? Я пробовал:
1) Refresh()
на сетке. Безрезультатно; сетка обновляется, но не перерисовывается перед перемещением курсора.
2) CommitEdit()
и EndEdit()
. Это даже не очищает последний выбранный флажок.
Что я могу сделать?
EDIT: Я плохо объясняю. Вот простейшее пошаговое руководство:
Есть две колонки флажков: c1 и c2.
1) Я нажимаю c1 на строке r1. c1 становится проверенным, а r1 выбирается.
2) Я нажимаю c2 на строке r2 (или даже r1). c2 становится проверенным, а r2 выбирается.
3) c1 и c2 теперь очищаются (после регистрации информации о флажке где-то).
Проблема заключается в том, что, хотя chackmark исчезает из c1 в r1, он остается там, в флажке на r2, до тех пор, пока r2 не потеряет фокус.
Надеюсь, что это поможет.
Я не понимаю. Выбор строк в datagridview и наличие галочек в некотором столбце (который, как я полагаю, вы из того, что вы написали), - это две разные вещи. Чего вы пытаетесь достичь? Выбор исчезнуть или что именно? – Tarec
Когда я нажимаю флажок, выбирается строка с флажком. Выбор может исчезнуть или нет, это не важно. То, что я хочу сделать, - это перерисовать сетку после очистки флажков, так что флажков там нет. –
@JohnNoCookies Я не понимаю, что вы подразумеваете под понятием checkbox? Вы рисуете его сами, и вы хотите его очистить? Или вы имеете в виду «снять отметку с флажка»? –