Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

Control.PreviewKeyDown événement

 

Date de publication : novembre 2016

Se produit avant l'événement KeyDown quand l'utilisateur appuie sur une touche pendant que le focus est sur ce contrôle.

Espace de noms:   System.Windows.Forms
Assembly:  System.Windows.Forms (dans System.Windows.Forms.dll)

public event PreviewKeyDownEventHandler PreviewKeyDown

Certaines touches, telles que l’onglet retour, ÉCHAP et les touches de direction, sont généralement ignorées par certains contrôles, car ils ne sont pas considérés comme des touches d’entrée. Par exemple, par défaut, un Button contrôle ignore les touches de direction. En appuyant sur les touches de direction généralement provoque le focus se déplace au contrôle précédent ou suivant. Les touches de direction sont considérées comme des touches de navigation et en appuyant sur ces clés ne déclenchent pas généralement la KeyDown événement pour unButton. Toutefois, les clés de la touche d’un Button déclenche le PreviewKeyDown événement. En gérant la PreviewKeyDown événement pour un Button et en définissant le IsInputKey propriété true, vous pouvez augmenter la KeyDown événement lorsque les touches de direction sont enfoncés. Toutefois, si vous gérez les touches de direction, le focus déplacera n’est plus au contrôle précédent ou suivant.

Pour plus d’informations sur la gestion des événements, consultez la page gestion et déclenchement d’événements.

L’exemple de code suivant montre un Button qui inclut un ContextMenuStrip. Lorsque la Button a le focus et que vous appuyez sur les touches flèche haut ou flèche bas, la ContextMenuStrip s’affiche. Le PreviewKeyDown détecte les touches flèche haut ou flèche bas sont utilisées de gestionnaire d’événements et définit le IsInputKey propriété true. Cela déclenche le KeyDown événement afin que vous pouvez afficher les ContextMenuStrip. Vous ne devez pas placer une logique le PreviewKeyDown Gestionnaire d’événements, sauf pour définir le IsInputKey propriété. Au lieu de cela, vous devez mettre votre logique dans le KeyDown Gestionnaire d’événements.

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;
    }
}

.NET Framework
Disponible depuis 2.0
Retour au début
Afficher: