フォームでキーが押されたかどうかを確認してから、そのキーを使用してサブルーチンを実行したかったのです。以下のコードは、フォームに他のコントロールがない場合にのみ機能します。私は何をすべきか?
Private Sub MainForm_KeyPress1(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress
MsgBox(e.KeyChar)
End Sub
フォームでキーが押されたかどうかを確認してから、そのキーを使用してサブルーチンを実行したかったのです。以下のコードは、フォームに他のコントロールがない場合にのみ機能します。私は何をすべきか?
Private Sub MainForm_KeyPress1(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress
MsgBox(e.KeyChar)
End Sub
KeyPreview
フォームのプロパティをに設定できますTrue
。Handled
このようにして、フォーム上のすべてのKeyPressイベントをキャッチします(のプロパティをにKeyPressEventArgs
設定しなかった場合は、後でキープレスが発生したコントロールによって処理されますTrue
)。
このプロパティがtrueに設定されている場合、フォームはすべてのKeyPress、KeyDown、およびKeyUpイベントを受け取ります。フォームのイベントハンドラーがキーストロークの処理を完了すると、キーストロークがフォーカスのあるコントロールに割り当てられます。たとえば、KeyPreviewプロパティがtrueに設定されていて、現在選択されているコントロールがTextBoxである場合、キーストロークがフォームのイベントハンドラーによって処理された後、TextBoxコントロールは押されたキーを受け取ります。フォームレベルでのみキーボードイベントを処理し、コントロールがキーボードイベントを受信できないようにするには、フォームのKeyPressイベントハンドラーのKeyPressEventArgs.Handledプロパティをtrueに設定します。
ソース:MSDN