Control.PreviewKeyDown イベント
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
このコントロールにフォーカスがあるときにキーが押された場合、KeyDown イベントの前に発生します。
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
イベントの種類
例
次のコード例は、 を Button 含む を ContextMenuStrip示しています。 に Button フォーカスがあり、上方向キーまたは下方向キーを押すと、 ContextMenuStrip が表示されます。 イベント ハンドラーは PreviewKeyDown 、上方向キーまたは下方向キーが押されたときにを検出し、 プロパティを IsInputKey に true
設定します。 これにより、 イベントが KeyDown 発生し、 を ContextMenuStrip表示できます。 プロパティを設定IsInputKeyする以外にPreviewKeyDown、イベント ハンドラーにロジックを配置しないでください。 代わりに、ロジックをイベント ハンドラーに配置する KeyDown 必要があります。
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
注釈
Tab キー、RETURN キー、ESC キー、方向キーなどの一部のキー押下は、通常、入力キーの押下とは見なされないため、一部のコントロールでは無視されます。 たとえば、既定では、コントロールは Button 方向キーを無視します。 通常、方向キーを押すと、フォーカスが前または次のコントロールに移動します。 方向キーはナビゲーション キーと見なされ、通常、これらのキーを押すと のイベントButtonはKeyDown発生しません。 ただし、 の方向キー Button を押すとイベントが発生します PreviewKeyDown 。 のイベントButtonをPreviewKeyDown処理し、 プロパティを IsInputKey にtrue
設定することで、方向キーがKeyDown押されたときにイベントを発生させることができます。 ただし、方向キーを処理すると、フォーカスは前または次のコントロールに移動しなくなります。
イベントの処理の詳細については、「処理とイベントの発生」を参照してください。
適用対象
.NET