次の方法で共有


修飾キーの押下を確認する方法

ユーザーがアプリケーションにキーを入力すると、ShiftAlt、Ctrlなどの押された修飾キーを監視できます。 修飾キーを他のキーと組み合わせて押したり、マウス クリックしたりすると、アプリケーションは適切に応答できます。 たとえば、 S キーを押すと、"s" が画面に表示されることがあります。 Ctrl キーを押しながら S キーを押すと、現在の文書が保存される可能性があります。

KeyDown イベントを処理する場合、イベント ハンドラーが受け取る KeyEventArgs.Modifiers プロパティは、押される修飾子キーを指定します。 また、KeyEventArgs.KeyData プロパティは、ビットごとの OR と組み合わせた修飾子キーと共に押された文字を指定します。

KeyPress イベントまたはマウス イベントを処理している場合、イベント ハンドラーはこの情報を受け取りません。 キー修飾子を検出するには、ModifierKeys クラスの Control プロパティを使用します。 どちらの場合も、適切な Keys 値とテストする値のビットごとの AND を実行する必要があります。 Keys 列挙では、各修飾子キーのバリエーションが提供されるため、ビットごとの AND チェックを正しい値で実行することが重要です。

たとえば、次のキー値は Shift キーを表します。

修飾キーとして Shift をテストするための正しい値は です。 同様に、CTRLALT を修飾子としてテストするには、それぞれ Keys.Control 値と Keys.Alt 値を使用する必要があります。

修飾子キーを検出する

修飾キーが押されているかどうかを検出するには、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

こちらも参照ください