如何只隐藏关闭(x)按钮

本文关键字:按钮 隐藏 | 更新日期: 2023-09-27 18:07:23

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

我需要隐藏关闭按钮,有什么方法可以做到吗?

非常感谢!

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

如何只隐藏关闭(x)按钮

我们可以通过设置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;
}

,然后创建一个菜单条项来退出应用程序。

欢呼