Control.PreviewKeyDown Evento
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Si verifica prima dell'evento KeyDown quando viene premuto un tasto mentre lo stato attivo è su questo controllo.
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
Tipo evento
Esempio
Nell'esempio di codice seguente viene illustrato un oggetto Button che include un oggetto ContextMenuStrip. Quando ha Button lo stato attivo e si preme i tasti FRECCIA SU o FRECCIA GIÙ, viene visualizzato .ContextMenuStrip Il PreviewKeyDown gestore eventi rileva quando vengono premuti i tasti FRECCIA SU o FRECCIA GIÙ e imposta la IsInputKey proprietà su true. In questo modo viene generato l'evento KeyDown in modo che sia possibile visualizzare .ContextMenuStrip Non è consigliabile inserire alcuna logica nel PreviewKeyDown gestore eventi, diversa da quella di impostare la IsInputKey proprietà . È invece necessario inserire la logica nel KeyDown gestore eventi.
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
Commenti
Alcuni tasti, ad esempio TAB, RETURN, ESC e tasti di direzione, vengono in genere ignorati da alcuni controlli perché non sono considerati tasti di input. Per impostazione predefinita, ad esempio, un Button controllo ignora i tasti di direzione. Premendo i tasti di direzione, lo stato attivo viene in genere spostato sul controllo precedente o successivo. I tasti di direzione sono considerati tasti di spostamento e premendo questi tasti in genere non generano l'evento KeyDown per un oggetto Button. Tuttavia, premendo i tasti di direzione di un oggetto Button viene generato l'evento PreviewKeyDown . Gestendo l'evento PreviewKeyDown per un Button oggetto e impostando la IsInputKey proprietà su true, è possibile generare l'evento KeyDown quando vengono premuti i tasti di direzione. Tuttavia, se si gestiscono i tasti di direzione, lo stato attivo non passerà più al controllo precedente o successivo.
Per ulteriori informazioni sulla gestione degli eventi, consultare gestione e generazione di eventi.