2016-08-25 32 views
0

VB.NETで複数のキーストロークを読むのに手助けができます。たとえば、Ctrl + P + Hキーの組み合わせを読み取ることができます。以下のコードを試しましたが、あなたの記事を読んだ後VB.NETでのキーの組み合わせ

if e.control=true and e.keycode=keys.P and e.keycode=keys.H then 
end if 
+0

ことを検出する簡単な方法はありません一度に複数の非修飾キーが押されます。なぜあなたはそのようなことをしたいのですか?私はあなたが実際に解決しようとしている問題に対するより良い解決策があると賭けるでしょう。私が間違っている場合は、複数のイベントを処理し、それらが特定のシーケンスで発生しているかどうかを判断するか、複数のAPI呼び出しを行うことが必要になります。 – jmcilhinney

+0

コントロールキーは修飾キーです。ここに例を見てください: http://stackoverflow.com/questions/4442805/vb-net-key-combination – minimalist

答えて

3

[OK]をフォームのKeyDownで... を仕事と私は理解することができますどのような、このようなものは、トリックを行う必要がありますから。

Public Class Form1 
Dim keyCombo As New List(Of Keys)({Keys.ControlKey, Keys.H, Keys.P}) 
Dim currentKeys As New List(Of Keys) 

Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown 
    currentKeys.Add(e.KeyCode) 

    If currentKeys.Intersect(keyCombo).Count = keyCombo.Count Then 
     MessageBox.Show("CTRL + H + P Has Been Pressed....") 
     currentKeys.Clear() 
    End If 

End Sub 

Private Sub Form1_KeyUp(sender As Object, e As KeyEventArgs) Handles Me.KeyUp 
    currentKeys.Remove(e.KeyCode) 
End Sub 

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    Me.KeyPreview = True 
End Sub 

End Class 

ご質問があれば、私に知らせて、私はしかし、これはあなたの方法でよく、本当にあなたを取得する必要があり、それらに答えるために全力を尽くす:)

+1

これは非常に特殊な解決策でした。ニース! –

+1

@VisualVincent Cheers :)普通の 'if e.keycode = 'よりずっとこの時間を使いました。 – Werdna

+1

キーの組み合わせを処理するために' ProcessCmdKey'関数をオーバーライドします。なぜ私はそれが標準の 'KeyDown/KeyPress/KeyUp'イベントよりも好きです。 –

関連する問題