Erweitern Minimieren
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original
Dieser Artikel wurde noch nicht bewertet - Dieses Thema bewerten.

Control.PreviewKeyDown-Ereignis

Aktualisiert: September 2010

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. TAB, RETURN, ESC und PFEILTASTEN, werden in der Regel von einigen Steuerelementen ignoriert, da sie nicht als Eingaben von Eingabetasten angesehen werden. Ein Button-Steuerelement ignoriert standardmäßig z. B. die PFEILTASTEN. Das Drücken der PFEILTASTEN wird der Fokus in der Regel zum vorherigen oder nächsten Steuerelement verschoben. Die PFEILTASTEN werden als Navigationstasten angesehen, und das Drücken dieser Tasten löst das KeyDown-Ereignis in der Regel nicht für einen Button aus. Das Drücken der PFEILTASTEN für eine Button löst jedoch das PreviewKeyDown-Ereignis aus. Indem Sie das PreviewKeyDown-Ereignis für eine Button behandeln und die IsInputKey-Eigenschaft auf true festlegen, können Sie das KeyDown-Ereignis auslösen, wenn die PFEILTASTEN gedrückt werden. Wenn Sie jedoch die PFEILTASTEN behandeln, bewegt der Fokus sich nicht mehr zum vorherigen oder folgenden Steuerelement.

Weitere Informationen zum Behandeln von Ereignissen finden Sie unter Behandeln von Ereignissen.

Im folgenden Codebeispiel wird eine Button veranschaulicht, die einen ContextMenuStrip einschließt. Wenn die Button den Fokus besitzt, und Sie die NACH-OBEN-TASTE oder die NACH-UNTEN-TASTE drücken, wird der ContextMenuStrip angezeigt. Der PreviewKeyDown-Ereignishandler erkennt, wenn die NACH-OBEN-TASTE oder die NACH-UNTEN-TASTE gedrückt wird und legt die IsInputKey-Eigenschaft auf true fest. Dies löst das KeyDown-Ereignis aus, damit Sie ContextMenuStrip anzeigen können. Sie sollten dem PreviewKeyDown-Ereignishandler keine Logik hinzufügen. Es sollte nur die IsInputKey-Eigenschaft festgelegt werden. Stattdessen sollten Sie die Logik in den KeyDown-Ereignishandler setzen.


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

Unterstützt in: 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Datum

Versionsgeschichte

Grund

September 2010

Weitere Erklärungen und ein weiteres Codebeispiel wurden hinzugefügt.

Kundenfeedback.

Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)

Community-Beiträge

HINZUFÜGEN
© 2013 Microsoft. Alle Rechte vorbehalten.