Como: Determine Which Modifier chave Was Pressed

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 E bit a bit do valor Keys apropriado e o valor que você está testando.A enumeração Keys oferece variações de cada tecla modificadora, portanto é importante que você execute o E bit a bit 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ção:

Os programadores de Visual Basic também podem acessar informações importantes por meio do Keyboard propriedade. Para mais informações, consulte: Objeto My.Computer.Keyboard.

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 se CapsLock está ativado no Visual Basic

Referência

Keys

ModifierKeys

Outros recursos

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