Control.PreviewKeyDown Gebeurtenis

Definitie

Vindt plaats vóór de KeyDown gebeurtenis wanneer een toets wordt ingedrukt terwijl de focus op dit besturingselement ligt.

public:
 event System::Windows::Forms::PreviewKeyDownEventHandler ^ PreviewKeyDown;
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 

Gebeurtenistype

Voorbeelden

In het volgende codevoorbeeld ziet u een voorbeeld van een ButtonContextMenuStrip. Wanneer de Button focus heeft en u op de toetsen Pijl-omhoog of Pijl-omlaag drukt, wordt de ContextMenuStrip knop weergegeven. De PreviewKeyDown gebeurtenishandler detecteert wanneer de toetsen Pijl-omhoog of Pijl-omlaag worden ingedrukt en stelt de IsInputKey eigenschap in op true. Hiermee wordt de KeyDown gebeurtenis gegenereerd, zodat u de ContextMenuStripgebeurtenis kunt weergeven. U moet geen logica in de PreviewKeyDown gebeurtenis-handler plaatsen, behalve om de IsInputKey eigenschap in te stellen. In plaats daarvan moet u uw logica in de KeyDown gebeurtenis-handler plaatsen.

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

Opmerkingen

Sommige toetstoetsen, zoals tab, RETURN, ESC en pijltoetsen, worden meestal genegeerd door sommige besturingselementen omdat ze niet worden beschouwd als invoertoetspersen. Standaard negeert een Button besturingselement bijvoorbeeld de pijltoetsen. Als u op de pijltoetsen drukt, wordt de focus meestal verplaatst naar het vorige of volgende besturingselement. De pijltoetsen worden beschouwd als navigatietoetsen en als u op deze toetsen drukt, wordt de KeyDown gebeurtenis meestal niet voor een Button. Als u echter op de pijltoetsen voor een Button gebeurtenis drukt, wordt de PreviewKeyDown gebeurtenis wel gegenereerd. Door de PreviewKeyDown gebeurtenis voor een Button gebeurtenis af te handelen en de IsInputKey eigenschap in te truestellen, kunt u de KeyDown gebeurtenis verhogen wanneer de pijltoetsen worden ingedrukt. Als u echter de pijltoetsen verwerkt, wordt de focus niet meer verplaatst naar het vorige of volgende besturingselement.

Zie Gebeurtenissen verwerken en genereren voor meer informatie over het afhandelen van gebeurtenissen.

Van toepassing op