Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Control.PreviewKeyDown-Ereignis

 

Veröffentlicht: Oktober 2016

Tritt vor dem KeyDown-Ereignis ein, wenn eine Taste gedrückt wird, während dieses Steuerelement den Fokus besitzt.

Namespace:   System.Windows.Forms
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)

public event PreviewKeyDownEventHandler PreviewKeyDown

Einige Tastatureingaben, z. B. die Registerkarte, RETURN, ESC und Pfeiltasten, werden in der Regel von einigen Steuerelementen ignoriert, da sie nicht als Eingabe von Eingabetasten angesehen werden. Beispielsweise wird standardmäßig ein Button Steuerelement ignoriert die Pfeiltasten. Drücken die Pfeiltasten in der Regel bewirkt, dass den Fokus zum vorherigen oder nächsten Steuerelement verschoben. Tasten für die Navigation und das Drücken dieser Schlüssel ist in der Regel nicht lösen die Pfeiltasten gelten die KeyDown -Ereignis für eineButton. Mit der Taste Schlüssel jedoch für eine Button ausgelöst wird, muss die PreviewKeyDown Ereignis. Durch Behandeln der PreviewKeyDown -Ereignis für eine Button und die IsInputKey Eigenschaft true, können die KeyDown -Ereignis, wenn die Pfeiltasten gedrückt werden. Wenn Sie die Pfeiltasten behandeln, wird der Fokus nicht mehr zum vorherigen oder nächsten Steuerelement verschoben.

Weitere Informationen zur Behandlung von Ereignissen finden Sie unter behandeln und Auslösen von Ereignissen.

Das folgende Codebeispiel veranschaulicht eine Button enthält eine ContextMenuStrip. Wenn die Button den Fokus hat, oder Sie drücken Sie die nach-oben- oder nach-unten-Tasten, die ContextMenuStrip angezeigt wird. Die PreviewKeyDown Ereignishandler erkennt, wenn die nach-oben- oder nach-unten-Tasten gedrückt werden und setzt die IsInputKey Eigenschaft true. Dies löst die KeyDown Ereignis, damit Sie anzeigen können, die ContextMenuStrip. Platzieren Sie keine Logik in die PreviewKeyDown Ereignishandler als das Festlegen der IsInputKey Eigenschaft. Sie sollten stattdessen die Logik ausführen, der KeyDown -Ereignishandler.

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
Verfügbar seit 2.0
Zurück zum Anfang
Anzeigen: