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 surveiller les touches de modification telles que les touches Maj, Alt et Ctrl. Lorsqu’une touche de modificateur est enfoncée en combinaison avec d’autres touches ou en cliquant sur la souris, votre application peut répondre de manière appropriée. Par exemple, si la lettre S est enfoncée, cela peut simplement entraîner l’affichage d’un « s » à l’écran, mais si les touches Ctrl+S sont enfoncées, le document actif peut être enregistré. Si vous gérez l’événement KeyDown , la Modifiers propriété du KeyEventArgs gestionnaire d’événements reçue spécifie les touches de modification qui sont enfoncées. Sinon, la KeyData propriété de KeyEventArgs spécifie le caractère qui a été appuyé ainsi que toutes les touches de modificateur combinées à un OR au niveau du bit. Toutefois, si vous gérez l’événement KeyPress ou un événement de souris, le gestionnaire d’événements ne reçoit pas ces informations. Dans ce cas, vous devez utiliser la ModifierKeys propriété de la Control classe. Dans les deux cas, vous devez effectuer un bit AND de la valeur appropriée Keys et la valeur que vous testez. L’énumération Keys offre des variantes de chaque touche de modificateur. Il est donc important d’effectuer le bit AND avec la valeur correcte. Par exemple, la touche MAJ est représentée par Shift, ShiftKeyRShiftKey et LShiftKey la valeur correcte pour tester Maj en tant que clé de modificateur est Shift. De même, pour tester ctrl et alt en tant que modificateurs, vous devez utiliser respectivement les valeurs et Alt les Control valeurs.

Remarque

Les programmeurs Visual Basic peuvent également accéder aux informations clés via la Keyboard propriété

Pour déterminer quelle touche de modificateur a été enfoncée

  • Utilisez l’opérateur au niveau AND du bit avec la ModifierKeys propriété et une valeur de l’énumération Keys pour déterminer si une touche de modificateur particulière est enfoncée. L’exemple de code suivant montre comment déterminer si la touche Maj est enfoncée dans un gestionnaire d’événements KeyPress .

    private:
        void textBox1_KeyPress(Object^ sender, KeyPressEventArgs^ e)
        {
            if ((Control::ModifierKeys & Keys::Shift) == Keys::Shift)
            {
                MessageBox::Show("Pressed " + Keys::Shift.ToString());
            }
        }
    
    public void TextBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if ((Control.ModifierKeys & Keys.Shift) == Keys.Shift)
        {
            MessageBox.Show("Pressed " + Keys.Shift);
        }
    }
    
    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
    

Voir aussi