Control.PreviewKeyDown Control.PreviewKeyDown Control.PreviewKeyDown Control.PreviewKeyDown Event

Définition

Se produit avant l'événement KeyDown quand l'utilisateur appuie sur une touche pendant que le focus est sur ce contrôle.Occurs before the KeyDown event when a key is pressed while focus is on this control.

public:
 event System::Windows::Forms::PreviewKeyDownEventHandler ^ PreviewKeyDown;
public event System.Windows.Forms.PreviewKeyDownEventHandler PreviewKeyDown;
member this.PreviewKeyDown : System.Windows.Forms.PreviewKeyDownEventHandler 
Public Custom Event PreviewKeyDown As PreviewKeyDownEventHandler 

Exemples

L’exemple de code suivant montre Button un qui comprend ContextMenuStripun.The following code example demonstrates a Button that includes a ContextMenuStrip. Lorsque le Button a le focus et que vous appuyez sur les touches haut ou bas, le ContextMenuStrip s’affiche.When the Button has the focus and you press the UP ARROW or DOWN ARROW keys, the ContextMenuStrip appears. Le PreviewKeyDown gestionnaire d’événements détecte quand les touches haut ou bas sont enfoncées et affecte à IsInputKey la propriété truela valeur.The PreviewKeyDown event handler detects when the UP ARROW or DOWN ARROW keys are pressed and sets the IsInputKey property to true. Cela déclenche l' KeyDown événement afin que vous puissiez afficher le ContextMenuStrip.This raises the KeyDown event so that you can display the ContextMenuStrip. Vous ne devez pas placer de logique dans PreviewKeyDown le gestionnaire d’événements, à l’exception IsInputKey de la définition de la propriété.You should not put any logic in the PreviewKeyDown event handler, other than to set the IsInputKey property. Au lieu de cela, vous devez placer votre KeyDown logique dans le gestionnaire d’événements.Instead, you should put your logic in the KeyDown event handler.

public Form1()
{
    InitializeComponent();

    // Form that has a button on it
    button1.PreviewKeyDown +=new PreviewKeyDownEventHandler(button1_PreviewKeyDown);
    button1.KeyDown += new KeyEventHandler(button1_KeyDown);
    button1.ContextMenuStrip = new ContextMenuStrip();
    // Add items to ContextMenuStrip
    button1.ContextMenuStrip.Items.Add("One");
    button1.ContextMenuStrip.Items.Add("Two");
    button1.ContextMenuStrip.Items.Add("Three");
}

// By default, KeyDown does not fire for the ARROW keys
void button1_KeyDown(object sender, KeyEventArgs e)
{
    switch (e.KeyCode)
    {
        case Keys.Down:
        case Keys.Up:
            if (button1.ContextMenuStrip != null)
            {
                button1.ContextMenuStrip.Show(button1,
                    new Point(0, button1.Height), ToolStripDropDownDirection.BelowRight);
            }
            break;
    }
}

// PreviewKeyDown is where you preview the key.
// Do not put any logic here, instead use the
// KeyDown event after setting IsInputKey to true.
private void button1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
    switch (e.KeyCode)
    {
        case Keys.Down:
        case Keys.Up:
            e.IsInputKey = true;
            break;
    }
}
Public Class Form1

    Public Sub New()
        InitializeComponent()
        ' Form that has a button on it
        AddHandler Button1.PreviewKeyDown, AddressOf Me.button1_PreviewKeyDown
        AddHandler Button1.KeyDown, AddressOf Me.button1_KeyDown
        Button1.ContextMenuStrip = New ContextMenuStrip
        ' Add items to ContextMenuStrip
        Button1.ContextMenuStrip.Items.Add("One")
        Button1.ContextMenuStrip.Items.Add("Two")
        Button1.ContextMenuStrip.Items.Add("Three")
    End Sub

    ' By default, KeyDown does not fire for the ARROW keys
    Private Sub button1_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs)
        Select Case (e.KeyCode)
            Case Keys.Down, Keys.Up
                If (Not (Button1.ContextMenuStrip) Is Nothing) Then
                    Button1.ContextMenuStrip.Show(Button1, _
                        New Point(0, Button1.Height), ToolStripDropDownDirection.BelowRight)
                End If
        End Select
    End Sub

    ' PreviewKeyDown is where you preview the key.
    ' Do not put any logic here, instead use the
    ' KeyDown event after setting IsInputKey to true.
    Private Sub button1_PreviewKeyDown(ByVal sender As Object, ByVal e As PreviewKeyDownEventArgs)
        Select Case (e.KeyCode)
            Case Keys.Down, Keys.Up
                e.IsInputKey = True
        End Select
    End Sub

End Class

Remarques

Certaines frappes de touches, telles que les touches TAB, retour, ÉCHAP et les touches de direction, sont généralement ignorées par certains contrôles, car elles ne sont pas considérées comme des touches d’entrée.Some key presses, such as the TAB, RETURN, ESC, and arrow keys, are typically ignored by some controls because they are not considered input key presses. Par exemple, par défaut, un Button contrôle ignore les touches de direction.For example, by default, a Button control ignores the arrow keys. Le fait d’appuyer sur les touches de direction entraîne généralement le déplacement du focus vers le contrôle précédent ou suivant.Pressing the arrow keys typically causes the focus to move to the previous or next control. Les touches de direction sont considérées comme des touches de navigation et l’utilisation KeyDown Buttonde ces clés ne déclenche généralement pas l’événement pour.The arrow keys are considered navigation keys and pressing these keys typically do not raise the KeyDown event for a Button. Toutefois, le fait d’appuyer sur les Button touches de direction PreviewKeyDown d’un déclenche l’événement.However, pressing the arrow keys for a Button does raise the PreviewKeyDown event. En gérant l' PreviewKeyDown événement pour un Button et en affectant à truela propriété la IsInputKey valeur, KeyDown vous pouvez déclencher l’événement lorsque l’utilisateur appuie sur les touches de direction.By handling the PreviewKeyDown event for a Button and setting the IsInputKey property to true, you can raise the KeyDown event when the arrow keys are pressed. Toutefois, si vous gérez les touches de direction, le focus ne passe plus au contrôle précédent ou suivant.However, if you handle the arrow keys, the focus will no longer move to the previous or next control.

Pour plus d'informations sur la gestion des événements, voir gestion et déclenchement d’événements.For more information about handling events, see Handling and Raising Events.

S’applique à