Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка 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", например.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)