Windows窗体:如何隐藏关闭(x)按钮?

ste*_*o m 136 c# winforms

我有一个模态对话框,需要隐藏关闭(X)按钮,但我无法使用 ControlBox = false,因为我需要保持最小化和最大化按钮.

我需要隐藏关闭按钮,有没有办法做到这一点?

非常感谢!

更新:我有权禁用它,这更简单:)谢谢大家!

小智 151

我们可以通过设置隐藏表格上的关闭按钮 this.ControlBox=false;

  • 你是否在他指明那不是一个选项的问题上阅读了这个问题? (28认同)
  • 谷歌搜索和这个SO QA是最受欢迎的.而这个答案正是我所寻找的.谢谢Abhishek ...... (26认同)
  • 这隐藏了所有这些尺寸按钮.不只是X. (14认同)

Dan*_*ite 137

您无法隐藏它,但可以通过覆盖表单的CreateParams属性来禁用它.

private const int CP_NOCLOSE_BUTTON = 0x200;
protected override CreateParams CreateParams
{
    get
    {
       CreateParams myCp = base.CreateParams;
       myCp.ClassStyle = myCp.ClassStyle | CP_NOCLOSE_BUTTON ;
       return myCp;
    }
}
Run Code Online (Sandbox Code Playgroud)

资料来源:http://www.codeproject.com/KB/cs/DisableClose.aspx

  • 除了从头开始设计您的表单之外没有其他方法. (4认同)

Dav*_*nan 24

好吧,您可以通过删除整个系统菜单来隐藏它:

private const int WS_SYSMENU = 0x80000;
protected override CreateParams CreateParams
{
    get
    {
        CreateParams cp = base.CreateParams;
        cp.Style &= ~WS_SYSMENU;
        return cp;
    }
}
Run Code Online (Sandbox Code Playgroud)

当然,这样做会删除最小化和最大化按钮.

如果保留系统菜单但删除关闭项目,则关闭按钮仍然存在但被禁用.

最后的选择是自己绘制非客户区域.这很难做到.

  • 这也很有效,太棒了!但*ControlBox = false*很容易用作你的方式. (3认同)
  • 这与将 `ControlBox` 设置为 false 相同。此外,它不符合要求:_我需要保留最小化和最大化按钮_ (2认同)

Ram*_*rja 17

你可以使用隐藏关闭框

this.ControlBox = false;
Run Code Online (Sandbox Code Playgroud)

并且不要忘记添加空格this.Text = " "以使其像这样

在此输入图像描述


Lar*_*ech 7

如果你真的想隐藏它,就像在"不可见"中一样,那么你可能需要创建一个无边框表单并自己绘制标题组件.VisualStyles库具有Windows Elements可用.您还必须重新添加重新调整表单大小或通过抓取标题栏来移动表单的功能.更不用说角落里的系统菜单了.

在大多数情况下,很难证明"关闭"按钮不可用,尤其是当您需要具有最小化功能的模态形式时.最小化模态形式真的没有意义.