Я установил флажок заголовка ( из этого ответа ) для моего DataGridView, который проверяет / снимает все флажки. Это работает для всех флажков, кроме первого. Первый флажок будет обновлять свое состояние только после нажатия на другой элемент управления, как показано здесь:
И даже позже я заметил, что флажок, который не обновляет свое состояние, является последним флажком, на котором был установлен щелчок вручную.
Если честно, я даже не совсем уверен, что происходит. Однако я попытался создать невидимую фиктивную кнопку и PerformClick()
ее, надеясь, что она будет считаться щелчком по элементу управления и обновит состояние флажка.
Я также изучил Refresh()
, Update()
и Invalidate()
, но ячейка флажка не имеет этих методов, и я не смог этого сделать.
Эта функция запускается, когда флажок заголовка установлен / снят:
private bool selectAllChecked = false;
private void SelectAll(object sender, EventArgs e) {
selectAllChecked = !selectAllChecked;
foreach (DataGridViewRow row in myGridView.Rows) {
DataGridViewCheckBoxCell checkb = (DataGridViewCheckBoxCell)row.Cells["Checkbox"];
checkb.Value = selectAllChecked;
}
}