ユーザーがアプリケーションにキーを入力すると、
KeyDown イベントを処理する場合、イベント ハンドラーが受け取る KeyEventArgs.Modifiers プロパティは、押される修飾子キーを指定します。 また、KeyEventArgs.KeyData プロパティは、ビットごとの OR と組み合わせた修飾子キーと共に押された文字を指定します。
KeyPress イベントまたはマウス イベントを処理している場合、イベント ハンドラーはこの情報を受け取りません。 キー修飾子を検出するには、ModifierKeys クラスの Control プロパティを使用します。 どちらの場合も、適切な Keys 値とテストする値のビットごとの AND を実行する必要があります。 Keys 列挙では、各修飾子キーのバリエーションが提供されるため、ビットごとの AND チェックを正しい値で実行することが重要です。
たとえば、次のキー値は Shift キーを表します。
修飾キーとして Shift
修飾子キーを検出する
修飾キーが押されているかどうかを検出するには、ModifierKeys プロパティと Keys 列挙値をビットごとの AND 演算子と比較します。
次のコード例は、 および KeyPress イベント ハンドラー内で KeyDown キーが押されているかどうかを確認する方法を示しています。
// Event only raised when non-modifier key is pressed
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if ((Control.ModifierKeys & Keys.Shift) == Keys.Shift)
MessageBox.Show("KeyPress " + Keys.Shift);
}
// Event raised as soon as shift is pressed
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if ((Control.ModifierKeys & Keys.Shift) == Keys.Shift)
MessageBox.Show("KeyDown " + Keys.Shift);
}
' Event only raised when non-modifier key is pressed
Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs)
If ((Control.ModifierKeys And Keys.Shift) = Keys.Shift) Then
MessageBox.Show("KeyPress " & [Enum].GetName(GetType(Keys), Keys.Shift))
End If
End Sub
' Event raised as soon as shift is pressed
Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs)
If ((Control.ModifierKeys And Keys.Shift) = Keys.Shift) Then
MessageBox.Show("KeyPress " & [Enum].GetName(GetType(Keys), Keys.Shift))
End If
End Sub
こちらも参照ください
.NET Desktop feedback