Практическое руководство. Определение нажатой управляющей клавиши
При создании приложения, которое принимает нажатия клавиш пользователем, можно также отслеживать за нажатием клавиш клавиши SHIFT, ALT и CTRL. При нажатии в сочетании с другими клавишами или с помощью щелчков мыши, приложение может реагировать соответствующим образом. Например если нажата буквы S, это может просто вызвать «s» для отображения на экране, но при нажатии клавиш CTRL + S, текущий документ может быть сохранен. Если вы обрабатываете KeyDown событий, Modifiers свойство KeyEventArgs полученных событием обработчик определяет нажатии клавиши-модификаторы. Кроме того KeyData свойство KeyEventArgs определяет символ, который также была нажата в сочетании с операцию побитового или любые клавиши-модификаторы. Тем не менее если обрабатывается KeyPress события или события мыши, обработчик событий не получает эти сведения. В этом случае необходимо использовать ModifierKeys свойство Control класса. В любом случае необходимо выполнить операцию побитового и соответствующего Keys значения и значения, вы тестируете. Keys Перечисление предоставляет варианты каждого ключа модификатор, поэтому очень важно выполнить побитового и с правильным значением. Например, клавиша SHIFT представляется Shift, ShiftKey, RShiftKey и LShiftKey правильное значение для тестирования является клавиша SHIFT Shift. Аналогичным образом, для проверки CTRL и ALT качестве модификаторов вы должны использовать Control и Alt соответственно.
Note
Программистов Visual Basic также доступны сведения о ключе через Keyboard свойство
Чтобы определение нажатой управляющей клавиши
Используйте побитовый
AND
оператор с ModifierKeys свойство и значение Keys перечисления, чтобы определить, нажата ли клавиша определенного модификатор. В следующем примере кода показано, как определить, нажата ли клавиша SHIFT в KeyPress обработчик событий.public void TextBox1_KeyPress(object sender, KeyPressEventArgs e) { if ((Control.ModifierKeys & Keys.Shift) == Keys.Shift) { MessageBox.Show("Pressed " + Keys.Shift); } }