代码之家  ›  专栏  ›  技术社区  ›  Anirudh Goel

显式阻止在C中加载ContextMenuStrip#

  •  1
  • Anirudh Goel  · 技术社区  · 15 年前

    我有一个要求,在没有设置特定标志时隐藏ContextMenuStrip。因为我认为我们不能显式地控制上下文菜单条的显示/隐藏,所以我决定用鼠标右键单击与ContextMenuStrip关联的控件。它是一个用户控件,所以我尝试处理它的mouseclick事件,在该事件中我检查标志是否设置以及按钮是否是正确的按钮。但令我惊讶的是,鼠标右键单击并不会激发事件,而只会为鼠标左键单击而激发。

    我有什么问题吗?有什么解决办法吗?

    右键单击检测到问题标题和说明已更改

    在做了更多的研究之后,当我处理控件上的鼠标向下事件时,我得到了右键单击来触发。然而,我仍然一无所知 显式阻止加载ContextMenuStrip . 另一个问题是,为什么mouselick没有检测到右键点击?


    当前解决方案

    注册事件处理程序

       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的开始事件中改变它呢?

    3 回复  |  直到 15 年前
        1
  •  2
  •   OregonGhost    15 年前

    当使用键盘上的上下文菜单键(或其调用的内容)调用上下文菜单时,您的解决方案无论如何都会失败。你可以使用 Opening 事件以取消打开上下文菜单。

        2
  •  1
  •   Binary Worrier    15 年前

    有一项工作要做。

    假设菜单项A设置控制控件B上上下文菜单的标志。

    在a的Click事件中,设置b.ContextMenu=Nothing将其关闭,并将b.ContextMenu设置回上下文菜单控件将其重新打开。

        3
  •  0
  •   ChrisF toni    15 年前

    在Winforms中还有 Click 事件-鼠标右键单击会激发它。

    如果你在使用WPF,你应该 MouseRightButtonDown MouseRightButtonUp 事件。

    看看这张桌子 MSDN page 列出哪些控件引发哪些单击事件。很明显,button、checkbox、richtextbox和radiobutton(以及其他一些)在右键单击时不会引发和事件。

    推荐文章