次の方法で共有


方法 : どの修飾子キーが押されたかを判断する

ユーザーのキーストロークを受け付けるアプリケーションを作成するときに、Shift、Alt、Ctrl などの修飾子キーの監視が必要になる場合があります。 他のキーまたはマウスのクリックと組み合わせて修飾子キーが押された場合、アプリケーションはそれに応じて適切な処理を実行できます。 たとえば、S キーを押した場合は単に画面上に "s" が表示されますが、Ctrl キーを押しながら S キーを押した場合は現在のドキュメントが保存されます。 KeyDown イベントを処理する場合、イベント ハンドラーが受け取る KeyEventArgsModifiers プロパティは、どの修飾子キーが押されたかを指定します。 また、KeyEventArgsKeyData プロパティは、押された文字およびビットごとの OR と結合された修飾子キーを指定します。 ただし、KeyPress イベントやマウス イベントを処理する場合、イベント ハンドラーはこの情報を受け取りません。 その場合は、Control クラスの ModifierKeys プロパティを使用する必要があります。 いずれの場合も、適切な Keys 値とテスト対象の値について、ビットごとの AND を実行する必要があります。 Keys 列挙型には修飾子キーごとのバリエーションが用意されているため、正しい値を使用してビットごとの AND を実行することが重要です。 たとえば、Shift キーは、ShiftShiftKeyRShiftKey、および LShiftKey で表されます。修飾子キーとしての Shift キーをテストするための正しい値は Shift です。 同様に、修飾子キーとしての Ctrl キーおよび Alt キーをテストするには、それぞれ Control 値および Alt 値を使用する必要があります。

注意

Visual Basic プログラマは Keyboard プロパティを介してキー情報にアクセスすることもできます。

どの修飾キーが押されたかを判断するには

  • 特定の修飾子キーが押されたかどうかを判断するには、ビットごとの AND 演算子を ModifierKeys プロパティおよび Keys 列挙型の値と組み合わせて使用します。 KeyPress イベント ハンドラー内で Shift キーが押されたかどうかを判断する方法を次のコード例に示します。

    Public Sub TextBox1_KeyPress(ByVal sender As Object, _
        ByVal e As KeyPressEventArgs) Handles TextBox1.KeyPress
    
        If ((Control.ModifierKeys And Keys.Shift) = Keys.Shift) Then
            MsgBox("Pressed " + Keys.Shift.ToString())
        End If
    End Sub
    
            public void TextBox1_KeyPress(object sender, KeyPressEventArgs e)
            {
                if ((Control.ModifierKeys & Keys.Shift) == Keys.Shift)
                {
                    MessageBox.Show("Pressed " + Keys.Shift);
                }
            }
    
    private:
        void textBox1_KeyPress(Object^ sender, KeyPressEventArgs^ e)
        {
            if ((Control::ModifierKeys & Keys::Shift) == Keys::Shift)
            {
                MessageBox::Show("Pressed " + Keys::Shift.ToString());
            }
        }
    

参照

処理手順

方法 : Visual Basic で CapsLock キーがオンかどうかを確認する

参照

Keys

ModifierKeys

その他の技術情報

Windows フォーム アプリケーションにおけるキーボード入力