Поделиться через


Практическое руководство. Определение нажатой управляющей клавиши

Обновлен: Ноябрь 2007

При создании приложения, которое должно реагировать на нажатие клавиш, часто бывает необходимо учитывать состояние клавиш CTRL, SHIFT и ALT. Когда одна из этих клавиш нажата в сочетании с другими клавишами или нажатием кнопки мыши, приложение может реагировать соответствующим образом. Например, если нажата клавиша с буквой S, это может просто привести к появлению "s" на экране, но при нажатии клавиш CTRL + S текущий документ может быть сохранен. При обработке события KeyDown свойство Modifiers объекта KeyEventArgs, получаемого обработчиком события, указывает какие из клавиш CTRL, SHIFT и ALT нажаты. Можно также использовать свойство KeyData объекта KeyEventArgs, которое указывает нажатый знак, а также любую из клавиш CTRL, SHIFT и ALT, объединенную с побитовой операцией ИЛИ. Однако если обрабатывается событие KeyPress или событие мыши, обработчик событий не получает этих сведений. В этом случае необходимо использовать свойство ModifierKeys класса Control. В любом случае, необходимо выполнить побитовую операцию И для соответствующего значения Keys и проверяемого значения. Перечисление Keys предоставляет варианты каждой из клавиш CTRL, SHIFT и ALT, поэтому важно выполнить побитовую операцию И с правильным значением. Например, клавиша SHIFT представляется значениями Shift, ShiftKey, RShiftKey и LShiftKey. Правильным значением для проверки управляющей клавиши SHIFT является Shift. Аналогичным образом, для проверки клавиш CTLR и ALT следует использовать значения Control и Alt соответственно.

yazd4ct6.alert_note(ru-ru,VS.90).gifПримечание.

Программистам на Visual Basic также доступны сведения о клавишах через свойство Keyboard. Дополнительные сведения см. в разделе Объект My.Computer.Keyboard

Чтобы определить, какая из клавиш CTRL, SHIFT и ALT нажата, выполните следующие действия.

  • Используйте побитовый оператор AND для свойства ModifierKeys и значения перечисления Keys, чтобы определить нажата ли одна из клавиш CTRL, SHIFT и ALT. В следующем примере кода показано, как определить, нажата ли клавиша SHIFT, внутри обработчика событий KeyPress.

    Public Sub TextBox1_KeyPress(ByVal sender As Object, _
        ByVal e As KeyPressEventArgs) Handles TextBox1.KeyPress
    
        If ((Control.ModifierKeys And Keys.Shift) = Keys.Shift) Then
            MsgBox("Pressed " + Keys.Shift.ToString())
        End If
    End Sub
    
         public void TextBox1_KeyPress(object sender, KeyPressEventArgs e)
            {
                if ((Control.ModifierKeys & Keys.Shift) == Keys.Shift)
                {
                    MessageBox.Show("Pressed " + Keys.Shift);
                }
            }
    
    private:
        void textBox1_KeyPress(Object^ sender, KeyPressEventArgs^ e)
        {
            if ((Control::ModifierKeys & Keys::Shift) == Keys::Shift)
            {
                MessageBox::Show("Pressed " + Keys::Shift.ToString());
            }
        }
    

См. также

Задачи

Практическое руководство. Определение режима CapsLock в Visual Basic

Ссылки

Keys

ModifierKeys

Другие ресурсы

Ввод с клавиатуры в приложении Windows Forms