如何只隐藏关闭(x)按钮
本文关键字:按钮 隐藏 | 更新日期: 2023-09-27 18:07:23
我有一个模态对话框,需要隐藏关闭(X)按钮,但我不能使用ControlBox = false
,因为我需要保留最小化和最大化按钮。
我需要隐藏关闭按钮,有什么方法可以做到吗?
非常感谢!
更新:我有权限禁用它,这更简单:)谢谢大家!
我们可以通过设置this.ControlBox=false;
来隐藏窗体上的关闭按钮
注意,这隐藏了所有的大小按钮。不只是x。在某些情况下,这可能是好的。
你不能隐藏它,但是你可以通过覆盖表单的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
你可以通过删除整个系统菜单来隐藏它:
private const int WS_SYSMENU = 0x80000;
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.Style &= ~WS_SYSMENU;
return cp;
}
}
当然,这样做会删除最小化和最大化按钮。
如果您保留了系统菜单,但删除了关闭项,则关闭按钮仍然存在,但被禁用。
最后一个选择是自己绘制非客户端区域。
如果您真的想隐藏它,如在"not visible"中,那么您可能必须创建一个无边框表单并自己绘制标题组件。VisualStyles库中有可用的Windows元素。您还必须添加重新调整表单大小或通过抓取标题栏移动表单的功能。更不用说角落里的系统菜单了。
在大多数情况下,很难证明"关闭"按钮不可用,特别是当您想要最小化功能的模态表单时。最小化一个模态表单真的没有意义。
你可以通过改变属性部分的FormBorderStyle来隐藏关闭按钮,或者在构造函数中使用:
public Form1()
{
InitializeComponent();
this.FormBorderStyle = FormBorderStyle.None;
}
,然后创建一个菜单条项来退出应用程序。
欢呼