Comment : identifier la touche de modification activée

Lorsque vous créez une application qui accepte les séquences de touches de l'utilisateur, vous pouvez également vouloir surveiller les touches de modification, telles que MAJ, ALT et CTRL. Lorsque vous appuyez sur une touche de modification en association avec d'autres touches, ou encore avec des clics de souris, votre application peut répondre de façon appropriée. Par exemple, si vous appuyez sur la lettre S, cela peut afficher simplement un « s » à l'écran, mais si vous appuyez simultanément sur les touches CTRL+S, le document actuel peut être enregistré. Si vous gérez l'événement KeyDown, la propriété Modifiers de KeyEventArgs reçue par le gestionnaire d'événements spécifie les touches de modification utilisées. Par ailleurs, la propriété KeyData de KeyEventArgs indique le caractère sur lequel vous avez appuyé ainsi que les touches de modification combinées à un opérateur de bits OR. Toutefois, si vous gérez l'événement KeyPress ou un événement de souris, le gestionnaire d'événements ne reçoit pas cette information. Dans ce cas, vous devez utiliser la propriété ModifierKeys de la classe Control. Dans les deux cas, vous devez exécuter une opération AND au niveau du bit pour la valeur Keys appropriée et pour la valeur que vous testez. L'énumération Keys offre des variations de chaque touche de modification ; il est donc important d'exécuter l'opération AND au niveau du bit avec la valeur correcte. Par exemple, la touche MAJ est représentée par Shift, ShiftKey, RShiftKey et LShiftKey. La valeur correcte à utiliser pour tester MAJ en tant que touche de modification est Shift. De la même façon, pour tester les touches CTRL et ALT comme touches de modification, vous devez utiliser les valeurs Control et Alt, respectivement.

Notes

Les programmeurs Visual Basic peuvent également accéder aux informations sur les touches via la propriété Keyboard.

Pour identifier la touche de modification activée

  • Utilisez l'opérateur de bits AND avec la propriété ModifierKeys et une valeur de l'énumération Keys pour déterminer si une touche de modification spécifique est activée. L'exemple de code suivant indique comment déterminer si la touche MAJ est activée dans un gestionnaire d'événements 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());
            }
        }
    

Voir aussi

Tâches

Comment : déterminer si la touche Verr. Maj. est activée dans Visual Basic

Référence

Keys

ModifierKeys

Autres ressources

Entrée au clavier dans une application Windows Forms