| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разработка Windows Forms > DataGridView в VirtualMode и CheckBox |
| Автор: zorran 15.3.2009, 00:24 |
| Есть DataGridView в VirtualMode При изменении ячейки с checkBox обрабатывается событие CellValuePushed: ==== private void gridFiles_CellValuePushed(object sender, DataGridViewCellValueEventArgs e) { if (e.ColumnIndex==0) // колонка с CheckBox { list[e.RowIndex].check = (bool)e.Value; } } ==== Но это событие возникает только когда ячейка теряет фокус, как сделать что-бы это событие возникало сразу после изменения значения ячейки? Или есть какой-то другой варинт? |
| Автор: zorran 15.3.2009, 18:49 |
| Сам нашел решение, дополнительно обрабатываем событие CellContentClick: == private void gridFiles_CellContentClick(object sender, DataGridViewCellEventArgs e) { if (e.ColumnIndex==0) { // колонка с CheckBox gridFiles.CurrentCell.ReadOnly = true; gridFiles.CurrentCell.ReadOnly = false; } } === Здесь мы как-бы переинициализируем ячейку, что вызывает потерю фокуса на какое-то время, и автоматически вызывается событие CellValuePushed, что нам и нужно. Данное событие возникает только когда мы щелкаем по флажку, а не по остальной части ячейки, и также реагирует на изменение флажка с клавиатуры пробелом! Название события не совсем верное - правильнее было бы "CellContentCnanged", например. |