我正在处理一些我未编写的代码,这是一个使用Windows Forms的C#应用程序,我对它不太熟悉。该应用程序具有一个主菜单(Designer中的contextMenuStrip),当您单击它时会打开它,但是如果再次在菜单名称上单击它,则它不会关闭。它闪烁,就像它正在关闭并立即重新打开一样。实际上-只要按下鼠标,它就会关闭,但是在按下UP时,它将再次打开。
编辑:好的,所以我知道它在做什么,只是不确定如何修复它。菜单“页眉”是一个带有附加到“单击”的事件的标签,该事件可打开菜单。因此,单击标题将打开菜单。但是,再次单击它也会打开菜单。我认为我无法检查表单的状态,因为在第二次单击时,菜单在mouseDown上关闭,因此在mouseUp发生“单击”时它已经关闭了。
换句话说,当菜单打开时,按下标题会导致菜单关闭-我猜是因为菜单的默认行为是在您单击其他位置时关闭。因此,菜单关闭了,但是当用户抬起手指时,Click会再次触发,然后菜单重新打开。那么如何解决呢?
private void labelMainMenu_Click(object sender, EventArgs e)
{
((EcPaMainForm)Owner).vShowMainMenu(labelMainMenu);
}
public void vShowMainMenu(Control oButton)
{
contextMenuStripMain.Show(oButton.Parent, (oButton.Right+oButton.Left)/2, oButton.Bottom);
}