Partilhar via


Como: Determinar qual tecla modificadora foi pressionada.

Quando você cria um aplicativo que aceita as entradas de teclado do usuário, também convém monitorar as teclas modificadoras, como ALT, SHIFT e CTRL. Quando uma tecla modificadora for pressionada em combinação com outras teclas, ou com cliques do mouse, seu aplicativo pode responder de forma apropriada. Por exemplo, se a letra S for pressionada, isso pode simplesmente fazer um "s" aparecer na tela, mas se as teclas CTRL + S forem pressionadas, o documento atual pode ser salvo. Se você tratar o evento KeyDown, a propriedade Modifiers do KeyEventArgs recebidas pelo manipulador de eventos especifica quais teclas modificadoras são pressionadas. Como alternativa, a propriedade KeyData de KeyEventArgs especifica o caractere que foi pressionado, bem como qualquer tecla modificadora combinados com um OU bit a bit. No entanto, se você estiver tratando o evento KeyPress ou um evento do mouse, o manipulador de eventos não recebe essas informações. Nesse caso, você deve usar a propriedade ModifierKeys da classe Control. Em ambos os casos, você deve executar um bit a bit e do Keys valor e o valor que você está testando. O Keys enumeração oferece variações de cada tecla modificadora, portanto, é importante que você execute o bit a bit e com o valor correto. Por exemplo, a tecla Shift é representada por Shift, ShiftKey, RShiftKey e LShiftKey O valor correto para testar SHIFT como uma tecla modificadora Shift. Da mesma forma, para testar CTLR e ALT como modificadoras você deve usar os valores Control e Alt, respectivamente.

ObservaçãoObservação

Os programadores Visual Basic também podem acessar informações de chave através de Keyboard propriedade

Como: Determinar Qual Tecla Modificadora foi Pressionada

  • Use o operador bit a bit AND com a propriedade ModifierKeys e um valor da enumeração Keys para determinar se uma tecla modificadora em particular está pressionada. O código exemplo a seguir mostra como determinar se a tecla Shift está pressionada em um manipulador de eventos 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());
            }
        }
    

Consulte também

Tarefas

Como: Determinar que CapsLock se está ligado no Visual Basic

Referência

Keys

ModifierKeys

Outros recursos

A Entrada do Teclado em um aplicativo de Formulários do Windows