防止右键单击窗体标题栏时显示系统上下文菜单

6
如何禁用窗体标题栏的右键单击并防止显示系统上下文菜单:

enter image description here

帮我解决这个问题

谢谢


2
winforms = winapi,你可以处理Windows消息,并防止某些消息到达base.WndProc()。不过具体怎么做还不确定。 - Sinatr
2
@moathnaji 实际上,建议的重复问题与此问题无关。 - Reza Aghaei
@RezaAghaei 对不起,我觉得它们的功能一样! - moath naji
3个回答

6
如果您想要禁用在窗口标题栏上右键单击时显示系统上下文菜单,可以处理 WM_CONTEXTMENU
const int WM_CONTEXTMENU = 0x007B;
protected override void WndProc(ref Message m)
{
    if (m.Msg == WM_CONTEXTMENU)
        m.Result = IntPtr.Zero;
    else
        base.WndProc(ref m);
}

如果您也想防止单击表单图标显示上下文菜单的可能性,那么可以将表单的ShowIcon属性设置为false:
this.ShowIcon = false;

0
你尝试将 Window Style 属性设置为 'None' 吗?这样应该可以完全删除标题栏的上下文菜单。

但我需要标题栏并且想要禁用右键单击。我已经成功阻止了双击,现在只需要停止右键单击。 - Nishtha Tarini
你需要使用这段代码(或类似的代码)来捕获鼠标右键单击事件。你应该在标题栏的MouseClick事件中使用它。这个链接可能会对你有所帮助:https://www.codeproject.com/Articles/7273/How-to-detect-a-left-mouse-click-on-a-Winform-titlif (e.Button.ToString().ToLower()=="right") { //做你需要做的事情。 } - emmademontford

0
您可以通过将窗体的ControlBox属性设置为false来实现此目的。
public Form1()
{
     InitializeComponent();
     this.ControlBox = false;
}

在单击标题栏右键时,将不再显示还原、最大化、最小化、关闭、移动等上下文菜单。

this.ControlBox = false;

注意:上面的一行代码(this.ControlBox = false;)是关键,展示了Form1构造函数和InitializeComponent()方法调用的示例,仅供上下文参考。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接