2010-12-14 23 views
9

VB.netアプリケーションで2つのキーをキャプチャしようとしています。この例のCTRL + Bでは、以下のコードは機能しませんが、単一のキーに対して機能します。私はtrueとkeypreviewを設定しようとしましたが、これは効果がありません。vb.netのキーの組み合わせ

Private Sub main_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles mybase.KeyDown 
      If e.KeyCode = Keys.ControlKey And e.KeyCode = Keys.B Then 
       MsgBox("CTRL + B Pressed !") 
      End If 
     End Sub 
    End Class 

おかげ

答えて

16

Controlキーを修飾キーです。このコードはCtrl + Bをテストする

e.KeyCode = Keys.B AndAlso e.Modifiers = Keys.Control 

キーコードはBですが、修飾子はCtrlです。

あなたのコードスニペットは、更新:

Private Sub main_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles mybase.KeyDown 
    If (e.KeyCode = Keys.B AndAlso e.Modifiers = Keys.Control) Then 
     MsgBox("CTRL + B Pressed !") 
    End If 
End Sub 
+1

完璧、何か簡単だと思った!ありがとう:) – Elliott

1

あなたはdocumentation for KeyEventArgsを見れば、あなたはクラスを使用すると、これらのキーが押されたかどうかを判断できるようにするALT、CTRLおよび修飾子のプロパティを公開することに注意しましょうあなたが興味を持っている主な記号キーに加えて。

Private Sub main_KeyDown(
     ByVal sender As Object, 
     ByVal e As System.Windows.Forms.KeyEventArgs) 
    Handles mybase.KeyDown 

    If e.Control And e.KeyCode = Keys.B Then 
     MsgBox("CTRL + B Pressed !") 
    End If 
End Sub 
2

は、あなたはそれが正常に動作させるために修飾した後もcontrolkeyを追加する必要があります。

Private Sub main_KeyDown(ByVal sender As Object, ByVal e As 
    System.Windows.Forms.KeyEventArgs) Handles mybase.KeyDown 
    If (e.KeyCode = Keys.B AndAlso e.Modifiers.ControlKey = Keys.Control) Then 
     MsgBox("CTRL + B Pressed !") 
    End If 
End Sub 
関連する問題