明确预防的ContextMenuStrip加载在C#
-
09-09-2019 - |
题
我没有要求隐藏的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,你应该有MouseRightButtonDown
和MouseRightButtonUp
事件。
检查出的表格,此 MSDN页面其中列出控制提高其点击事件。显著,按钮,复选框,RichTextBox中和单选按钮(和其他几个人)不提高和右击事件。