次の方法で共有


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

更新 : 2007 年 11 月

ユーザーのキーストロークを受け付けるアプリケーションを作成するときに、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 値を使用する必要があります。

yazd4ct6.alert_note(ja-jp,VS.90).gifメモ :

Visual Basic プログラマは Keyboard プロパティを介してキー情報にアクセスすることもできます。詳細については、「My.Computer.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 フォーム アプリケーションにおけるキーボード入力