我需要检测何时打开和关闭MenuStrip(不是上下文菜单)。"进入"和"离开"事件似乎不起作用。
为什么我需要它:我使用带有"文件","编辑","关于"等选项的菜单条。但是,当菜单条处于活动状态,并且用户使用鼠标或键盘浏览它时,Windows 窗体上的其他控件也会响应它。
例如:我点击"编辑>选择性粘贴"。>无格式文本"在我的应用程序中使用鼠标。但是在展开的菜单项下方是一个 XNA 2D 渲染控件,它还检测鼠标输入并执行我不希望它执行的操作。现在,如果我可以在菜单打开时检测到,我可以禁用/启用适当的控件。
在不了解您正在做什么的情况下,您可以尝试以下代码:
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),则获得焦点事件将处理这种情况。如果只需要在使用鼠标时进行更改,则菜单活动事件应该可以工作。