Windows窗体:如何隐藏closures(x)button?

我有一个模式对话框,需要隐藏closures(X)button,但我不能使用ControlBox = false ,因为我需要保持最小化和最大化button。

我需要隐藏只是closuresbutton,有没有办法做到这一点?

非常感谢!

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

您不能隐藏它,但可以通过覆盖窗体的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; } } 

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

我们可以通过设置this.ControlBox=false;隐藏this.ControlBox=false;上的closuresbuttonthis.ControlBox=false;

那么,你可以通过删除整个系统菜单来隐藏它:

 private const int WS_SYSMENU = 0x80000; protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.Style &= ~WS_SYSMENU; return cp; } } 

当然,这样做会删除最小化和最大化button。

如果保留系统菜单但删除了closures项目,则closuresbutton保持不变,但是被禁用。

最后的select是自己绘制非客户区域。 这很难得到正确的。

如果你真的想隐藏它,如“不可见”,那么你可能需要创build一个无边框的forms,并自己绘制标题组件。 VisualStyles库有可用的Windows元素。 您还必须添加重新调整表单或通过抓取标题栏来移动表单的function。 更不用说angular落里的系统菜单了。

在大多数情况下,很难certificate“closures”button不可用,特别是当你想要一个最小化function的模式forms。 最小化模式forms确实没有意义。

那么你可以隐藏closuresbutton,通过更改FormBorderStyle从属性部分或编程方式在构造函数中使用:

 public Form1() { InitializeComponent(); this.FormBorderStyle = FormBorderStyle.None; } 

那么你创build一个菜单条项目来退出应用程序。

干杯

在表单的属性中设置“Control Box”= False,但是它会隐藏Minimized和Maximize。