2015-07-17 7 views
1

Форма C# имеет datagridview. Мне нужно поймать событие, когда CTRL + UP Стрелка CTRL +вниз стрелка нажата в ячейке в режиме редактирования.Ловушка DataGridViewCell CTRL + Вверх или CTRL + Вниз

Не знаете, какое событие обрабатывать и как его следует обрабатывать.

+1

использовать событие DataGridView KeyPress. Получите отредактированную ячейку из DataGridView.CurrentCell. – Graffito

+0

Чтобы проверить ключ в событии KeyPress: if (((Control.ModifierKeys & Keys.Control) == Keys.Control) && e.KeyChar == Keys.Up) ... – Graffito

+0

У вас есть Graffito. Благодарю. Я бы дал вам +1, но еще не получил достаточной репутации, чтобы дать это сделать. – Rob

ответ

0

Ручка KeyUp событие для вашего DataGridView, как это:

private void dataGridView1_KeyUp(object sender, KeyEventArgs e) 
{ 
    if (e.Control && e.KeyCode == Keys.Up) 
     MessageBox.Show(string.Format("Ctrl+{0}",e.KeyCode.ToString())); 
    else if (e.Control && e.KeyCode == Keys.Down) 
     MessageBox.Show(string.Format("Ctrl+{0}", e.KeyCode.ToString())); 
} 

Добавление экрана печати я получаю, когда я на самом деле запустить код:

enter image description here

Из MSDN:

Оператор условного-И ()&) выполняет логическое-AND его операндов bool , но при необходимости оценивает его второй операнд.

https://msdn.microsoft.com/en-us/library/2a723cdk%28v=vs.140%29.aspx

Оператор & может функционировать либо как однокомпонентные или бинарный оператор.

https://msdn.microsoft.com/en-us/library/sbf85k1c%28v=vs.140%29.aspx

Поскольку оба операнда bool в моем коде, && является предпочтительным вариантом, хотя я тестировал с & и работал хорошо. Также && более эффективен, потому что он проверяет второй операнд только при необходимости.

+0

Я действительно ПРОПУСТИТЬ этот код .... и он сработал. – jsanalytics

+0

Я добавил экран печати из моего теста для кода, который я разместил, показывая окно сообщения при нажатии CTRL + UP. – jsanalytics

+0

@Rob действительно ли вы протестировали код? Я повторил свой тест, и все прошло отлично. – jsanalytics