【问题标题】:Prevent showing system context menu on right click on Form title bar防止在表单标题栏上右键单击显示系统上下文菜单
【发布时间】:2020-03-17 08:41:30
【问题描述】:

如何禁用表单标题栏的右键单击并阻止显示系统上下文菜单:

帮助我摆脱这个问题

谢谢

【问题讨论】:

  • winforms = winapi,你可以process windows messages 并阻止某些到达base.WndProc()。不知道到底是怎么回事。
  • @moathnaji 实际上,建议的副本与这个问题无关。
  • @RezaAghaei 对不起,在我看来它的功能相同!

标签: c# .net forms winforms


【解决方案1】:

如果您特别想禁用在窗口标题栏上右键单击显示系统上下文菜单,您可以处理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;

【讨论】:

    【解决方案2】:

    您可以通过将表单的ControlBox 属性设置为false 来实现。

    public Form1()
    {
         InitializeComponent();
         this.ControlBox = false;
    }
    

    右键单击标题栏时不再显示带有恢复、最大化、最小化、关闭、移动的上下文菜单。

    this.ControlBox = false;
    

    注意:上面一行 (this.ControlBox = false;) 是键,并显示了带有 InitializeComponent() 方法调用的 Form1 构造函数是示例,只是为了显示上下文。

    【讨论】:

      【解决方案3】:

      您是否尝试将您的 Window Style 属性设置为“None”?这应该完全删除标题栏的上下文菜单。

      【讨论】:

      • 但我需要标题栏并想禁用右键单击。我设法停止双击现在只需要停止右键单击
      • 您需要使用此代码(或类似代码)来捕获鼠标右键单击。您需要在标题栏的 MouseClick 事件中使用它。 This link 可以帮助你。 if (e.Button.ToString().ToLower()=="right"){//do whatever you need.}
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-21
      • 2010-09-21
      • 2019-05-08
      相关资源
      最近更新 更多