如何隐藏表单的关闭按钮?

时间:2013-09-13 06:45:34

标签: c# winforms

我使用下面的代码显示表单图标但禁用关闭按钮图标。这有效,但我想完全隐藏按钮。我怎样才能做到这一点?

public partial class Form1 : Form
{
    private const int CS_NOCLOSE = 0x200;
    protected override CreateParams CreateParams
    {
        get
        {
            CreateParams mdiCp = base.CreateParams;
            mdiCp.ClassStyle = mdiCp.ClassStyle | CS_NOCLOSE;

            return mdiCp;
        }
    }

    public Form1()
    {
        InitializeComponent();
    }

}

4 个答案:

答案 0 :(得分:1)

你无法隐藏它,但你可以通过上面的代码禁用它。

使用您自己的控制框更好地创建自己的表单而不使用关闭按钮,然后隐藏父表单的控件框。

答案 1 :(得分:1)

这将隐藏所有内容:

this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;

现在你可以制作一个大容器面板并放置一些自定义按钮来执行类似恢复按钮和放大器的操作。最小化Button。 OK ??

答案 2 :(得分:0)

试试这个,禁用关闭(X)按钮,它在vb.net中,你可以将其转换为c#

Private Const SC_CLOSE As Integer = &HF060
Private Const MF_GRAYED As Integer = &H1

<DllImport("user32.dll")> _
Private Shared Function GetSystemMenu(hWnd As IntPtr, bRevert As Boolean) As IntPtr
End Function

<DllImport("user32.dll")> _
Private Shared Function EnableMenuItem(hMenu As IntPtr, wIDEnableItem As Integer, wEnable As Integer) As Integer
End Function

Public Sub EnableDisable(form As Form, isEnable As Boolean)
    EnableMenuItem(GetSystemMenu(form.Handle, isEnable), SC_CLOSE, MF_GRAYED)
End Sub

致电EnableDisable(Me, False)停用,EnableDisable(Me, True)启用

它对我有用

答案 3 :(得分:0)

如果所有其他按钮(min,max,help)也被隐藏,关闭按钮将仅隐藏。

但隐藏所有这些的一种方法是将表单边框设置为无,

this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;