2012-01-27 8 views
2

У меня есть DataGridView с событием KeyDown.DataGridView KeyDown Событие не работает

void dataGridView1_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.C && e.Modifiers == (Keys.Control | Keys.Shift)) 
    {  
     MessageBox.Show("ok"); // to test if working 
    } 
} 

Окно сообщения запрашивает, когда я нажимаю комбинации клавиш.
Но это только тогда, когда datagridview пуст (без строк данных). Код не работает, когда у datagridview уже есть строки.

Есть ли неправильные коды?

+0

Входит ли отладчик в обработчик событий? – ken2k

+0

Вы пробовали PreProcessMessage или OnPreviewKeyDown? – pstrjds

+0

@pstrjds: к сожалению, нет идеи как. вы можете помочь? – yonan2236

ответ

0

Datagridview имеет дочерние элементы управления со своими собственными событиями. Я думаю, вам нужно поймать события со строками и/или ячейками.

+0

как? не могли бы вы привести пример? спасибо – yonan2236

+0

Я не делал этого сам, но определяя свой собственный класс datagridview чем-то вроде ответа на это: http://stackoverflow.com/questions/325677/how-to-get-keypressed-keydown-events-from-datagridview- data-cells –

+0

thnks, я попробую это. – yonan2236

1

Обработчик события KeyDown не срабатывает, когда DataGridView находится в режиме редактирования.

+0

Я отключил режим редактирования datagridview. могут ли выбранные строки влиять на четное представление datagridview? – yonan2236

0

Я считаю, что вам нужно будет извлечь из класса DataGridView, чтобы получить необходимую обработку ключей. Другой альтернативой будет add a message filter, но я бы пошел с полученной сеткой данных в качестве своего первого подхода.

Смежные вопросы