我没有要求隐藏的ContextMenuStrip当不设置特定的标志。因为我不认为我们可以明确地控制上下文菜单条的显示/隐藏,我决定陷阱与其中的ContextMenuStrip关联的控制鼠标右键点击。这是一个用户控件,所以我尝试处理它的鼠标点击事件中,我检查是否设置了标志,如果该按钮是一个右键。但是我吃惊的是,该事件不会得到在鼠标右击解雇,但只针对火灾左键。

有什么事情我错了或者有什么解决方法吗?

从右CLICK越来越DETECTED,问题标题和描述的改变

做一些更多的研究后,我得到了右击火,当我处理的控制的MOUSE_DOWN事件。但是我还是毫无头绪,如何的明确阻止的ContextMenuStrip加载的。还有一个问题存在,为什么鼠标点击没有检测到右按钮点击?


当前的解决方法

注册事件处理程序

   userControl1.Control1.MouseDown += new MouseEventHandler(Control1_MouseDown);

 void Control1_MouseDown(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Right && flag == false)
        {
           userControl1.Control1.ContextMenuStrip = null;
        }
        else
        {
            userControl1.Control1.ContextMenuStrip = contextMenuStrip1;
        }

    }

这是在当前的解决方法我做。 但如何可以改变它在的ContextMenuStrip开幕事件

有帮助吗?

解决方案

在上下文菜单与上下文菜单键(或者它叫什么)在键盘上调用您的解决方案无论如何都会失败。可以使用Opening事件取消上下文菜单的开口。

其他提示

有一个变通。

比方说菜单项设置控制上控制乙上下文菜单中的标志。

在对于A的点击事件,则设置b.ContextMenu =没有将其关闭,并设置b.ContextMenu返回到上下文菜单控制来切换,重新打开。

在的WinForms也有在Click事件 - 这也被解雇了鼠标右键点击

如果您正在使用WPF,你应该有MouseRightButtonDownMouseRightButtonUp事件。

检查出的表格,此 MSDN页面其中列出控制提高其点击事件。显著,按钮,复选框,RichTextBox中和单选按钮(和其他几个人)不提高和右击事件。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top