こんにちは私は、特定のキーのセットが押されたときにフォームを表示するのが難しいです。メインフォームが最初に実行されます。これはctrl + alt + shift + hを押すことによってトグルされるまで隠されているはずの2番目のフォームです。これは私が持っているコードです、私はそれがうまくいくはずだと信じていますが、そうではありません。私はプレスイベントごとに1ミリ秒VBキープレスイベントで特定のフォームを切り替える
Private Sub tmrKeys_Tick(sender As Object, e As EventArgs) Handles tmrKeys.Tick
Dim key As String = Nothing
If My.Computer.Keyboard.AltKeyDown AndAlso My.Computer.Keyboard.CtrlKeyDown AndAlso My.Computer.Keyboard.ShiftKeyDown AndAlso key = "H" Then
Dim x = New form2()
x.Show()
End If
End Sub
をチェックするタイマーで、このようにそれを試してみましたが、私はまた、このような独立した機能を試してみました:
Private Sub form1_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
If e.Control AndAlso e.Alt AndAlso e.Shift AndAlso e.KeyCode = Keys.H Then
form2.Show()
End If
End Sub
が助けを事前にありがとうを。
「タイマー」は絶対に使用しないでください。いかなる状況下でもありません。最初の質問は、メインフォームにフォーカスがあるときだけ、またはウィンドウにフォーカスがあるかどうかにかかわらず、このキーの組み合わせが機能するかどうかです。後者の場合は、Windows APIを使用してホットキーを登録する必要があります。前者の場合、2番目のコードスニペットは正しいですが、選択可能なコントロールがあれば、フォームはデフォルトでそのKeyDownイベントを発生させません。このようなフォームを取得してkeybaodイベントを発生させるには、 'KeyPreview'プロパティを' True'に設定する必要があります。 – jmcilhinney
フォームのフォーカスに関係なくキーを押すと、トグルする必要があります。 – gregknight
この場合、フォームにフォーカスがない場合はイベントを発生させることができないため、フォームのイベントを処理することは無意味です。 'RegisterHotKey' APIを調べてください。あなたは検索でたくさんの例を見つけることができます。 VB.NETの具体例を使用するか、VB6の例を適切に変更するだけです。 – jmcilhinney