2

ユーザーがさまざまなものを選択できるメニューバーを持つように、フォームの 1 つに MenuStrip があります。便宜上、キー ショートカットがマップされているものもあります。また、MenuStrip のレンダラーをオーバーライドすることで、すべての項目とそのサブメニューの外観をカスタマイズしました。

この問題は、ドロップダウン リストが添付されたアイテムのキー ショートカットを使用すると発生します。リストがダウンしているときにエスケープ キーを押すと、期待どおりにリストが閉じますが、親アイテムはまだ選択されています。まだ強調表示されており、まだフォーカスがあります。エスケープキーをもう一度押しても何も起こりません。私は自分でこの動作を実装することになっていると思いますか? もしそうなら、どのように?ToolStripMenuItems には、選択を解除するように指示する関数呼び出しがないようです。

編集:誰かが興味を持っている場合に備えて、フォームの KeyDown イベントでエスケープキーをキャプチャしようとしています。フォームを終了するために使用します。コードは次のとおりです。

Private Sub myForm_KeyDown(sender as Object, e As KeyEventArgs) Handles Me.KeyDown
   If e.KeyCode = Keys.Escape Then
      Me.Close()
      e.Handled = True
   End If
End Sub

しかし、これをコメントアウトしても、上記の動作が引き続き発生します。

4

1 に答える 1

1

デフォルトでは、フォームの KeyDown イベントに配置されたコードは、フォーム自体にフォーカスがある場合にのみトリガーされます。フォームにフォーカスがあるものに関係なくこれらのイベントを発生させるには、フォームの次のプロパティを変更する必要があります。

FalseからTrueへのKeyPreview 。

これにより、フォーカスがフォーム上の任意のコントロールにあるときに、フォームの「キー」関連のイベントがトリガーされます。

于 2012-07-23T18:55:59.047 に答える