2

MenuStrip(コンテキストメニューではない)が開いたり閉じたりするたびに検出する必要があります。EnterイベントとLeaveイベントが機能していないようです。

必要な理由:「ファイル」、「編集」、「バージョン情報」などのオプションを備えたMenuStripを使用します。ただし、メニューストリップがアクティブで、ユーザーがマウスまたはキーボードを使用して他のコントロールを使用してナビゲートする場合Windowsフォームもそれに応答します。

例:マウスを使用して、アプリケーションで[編集]>[形式を選択して貼り付け]をクリックします。しかし、展開されたメニュー項目の下には、XNA 2dレンダリングコントロールがあります。このコントロールは、マウス入力も検出し、実行したくないことを実行します。これで、メニューが開いているときはいつでも検出できれば、適切なコントロールを無効/有効にできます。

4

1 に答える 1

1

あなたがしていることについてもう少し知らなくても、あなたは以下のコードを試すことができます:

 private void Form1_Load(object sender, EventArgs e)
  {
     menuStrip1.GotFocus += new EventHandler(MenuStrip1_GotFocus);
     menuStrip1.LostFocus += new EventHandler(MenuStrip1_LostFocus);
  }

  private void MenuStrip1_GotFocus(object sender, EventArgs e)
  {
     textBox1.Text = "Has Focus";
  }

  private void MenuStrip1_LostFocus(object sender, EventArgs e)
  {
     textBox1.Text = "Lost Focus";
  }

  private void menuStrip1_MenuActivate(object sender, EventArgs e)
  {
     textBox1.Text = "Has Focus";
  }

  private void menuStrip1_MenuDeactivate(object sender, EventArgs e)
  {
     textBox1.Text = "Lost Focus";
  }

これはあなたが上で説明したことのために働いているようです。タブストップがオン(true)のメニューストリップがある場合、取得したフォーカスイベントがこのケースを処理します。マウスを使用している場合にのみ変更を加える必要がある場合は、メニューアクティブイベントが機能するはずです。

于 2012-12-07T21:43:07.920 に答える