0

フォームでキーが押されたかどうかを確認してから、そのキーを使用してサブルーチンを実行したかったのです。以下のコードは、フォームに他のコントロールがない場合にのみ機能します。私は何をすべきか?

Private Sub MainForm_KeyPress1(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress
    MsgBox(e.KeyChar)
End Sub
4

1 に答える 1

0

KeyPreviewフォームのプロパティをに設定できますTrueHandledこのようにして、フォーム上のすべてのKeyPressイベントをキャッチします(のプロパティをにKeyPressEventArgs設定しなかった場合は、後でキープレスが発生したコントロールによって処理されますTrue)。

このプロパティがtrueに設定されている場合、フォームはすべてのKeyPress、KeyDown、およびKeyUpイベントを受け取ります。フォームのイベントハンドラーがキーストロークの処理を完了すると、キーストロークがフォーカスのあるコントロールに割り当てられます。たとえば、KeyPreviewプロパティがtrueに設定されていて、現在選択されているコントロールがTextBoxである場合、キーストロークがフォームのイベントハンドラーによって処理された後、TextBoxコントロールは押されたキーを受け取ります。フォームレベルでのみキーボードイベントを処理し、コントロールがキーボードイベントを受信できないようにするには、フォームのKeyPressイベントハンドラーのKeyPressEventArgs.Handledプロパティをtrueに設定します。

ソース:MSDN

于 2013-01-20T22:24:02.780 に答える