代码之家  ›  专栏  ›  技术社区  ›  tylerl

在菜单项中处理右键单击

  •  0
  • tylerl  · 技术社区  · 14 年前

    是否可以在.NET中右键单击菜单项?

    框架似乎不会将其作为事件公开,但我见过其他应用程序(如chrome和firefox),它们允许您为菜单项打开右键单击上下文菜单。假设有了一个小的事件循环魔法,你可以在.NET中做同样的事情,对吗?

    编辑 :我说的是桌面应用程序编程,不是ASP.NET。

    4 回复  |  直到 14 年前
        1
  •  1
  •   Hans Passant    14 年前

    这是一种不自然的行为。菜单设计为当失去焦点时自动弹出。上下文菜单将获得焦点,菜单结束。门努斯特里会和你针锋相对的,我还没见过这样做。

        2
  •  0
  •   Aren    14 年前

    在WinForms中,我不确定,我不这么认为,Click事件是一个通用事件 EventHandler

    在WPF中,您可以 OnClick 事件通过 System.Windows.Input.MouseEventArgs 对象,其上具有类似 .MiddleButton .RightButton

    对于ASP.NET,您需要使用javascript来捕获右键单击并提交一个秘密表单,启动一个回发,或者使用Ajax。

        3
  •  0
  •   Ivan Ičin    13 年前

    Click 可检测到鼠标右键单击的事件:

    Control.MouseButtons == MouseButtons.Right;
    

    尽管你可能还想签这个 Closing 预防事件 Close 引发的事件。

        4
  •  0
  •   Mick Bruno    8 年前

    这不完全是要求的,但是一个不错的折衷方案,从用户界面标准的角度来看,这并不是太大的延伸。 WinForms菜单似乎对右键单击没有响应,因此请使用按下的shift键的存在/不存在。

    private void MenuClick(object sender, EventArgs args)
    {
        if ((Control.ModifierKeys & Keys.Shift) == Keys.Shift) DoSpecialStuff();
        else DoNormalStuff();
    }