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) 上有制表位,那么得到的焦点事件将处理这种情况。如果您只需要在使用鼠标时进行更改,那么 Menu Active 事件应该可以工作。

于 2012-12-07T21:43:07.920 回答