C# 处理菜单项中的右键单击

C# 处理菜单项中的右键单击,c#,.net,winforms,user-interface,C#,.net,Winforms,User Interface,是否可以在.NET中检查右键单击菜单项 框架似乎没有将其作为事件公开,但我见过其他应用程序,如Chrome和Firefox,它们允许您为菜单项打开右键单击上下文菜单。大概通过一点事件循环魔法,你可以在.NET中做同样的事情,对吗 编辑:我说的是桌面应用程序编程,不是ASP.NET。在Winforms中,我不确定,我不这么认为,单击事件是一个通用的事件处理程序 在WPF中,可以在System.Windows.Input.MouseEventArgs对象中传递OnClick事件,该对象的属性类似于.

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

框架似乎没有将其作为事件公开,但我见过其他应用程序,如Chrome和Firefox,它们允许您为菜单项打开右键单击上下文菜单。大概通过一点事件循环魔法,你可以在.NET中做同样的事情,对吗


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

在Winforms中,我不确定,我不这么认为,单击事件是一个通用的事件处理程序

在WPF中,可以在System.Windows.Input.MouseEventArgs对象中传递OnClick事件,该对象的属性类似于.MiddleButton.RightButton


对于ASP.NET,您需要使用javascript捕获右键单击并提交秘密表单、发起回发或使用AJAX。

这是一种不自然的行为。菜单设计为在失去焦点时自动弹出。上下文菜单将成为焦点,即菜单的末尾。MenuStrip将与您进行殊死搏斗,我还没有看到它完成。

在单击事件中,您可以通过以下方式检测鼠标右键单击:

Control.MouseButtons == MouseButtons.Right;

尽管您可能希望在关闭事件中也检查这一点,以防止引发关闭事件。

这并不是要求的,但这是一个不错的折衷方案,从UI标准的角度看,也不是太大的延伸。 WinForms菜单似乎对右键单击都没有响应,因此请使用按住shift键的有无

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

事实上,他说的是chrome和firefox,我想说的是asp.net.chrome和firefox只是使用win32的应用程序的例子,允许右键单击菜单项。我并不是想引导你走向网络开发。