1

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

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

4 回答 4

1

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

最好用自己的控制框制作自己的表单,而不用关闭按钮,然后隐藏父表单的控制框。

于 2013-09-13T06:51:05.990 回答
1

这将隐藏一切:

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

现在您可以制作一个大容器面板并放置自定义按钮,以执行诸如恢复按钮和最小化按钮之类的操作。好的??

于 2013-09-13T10:20:33.837 回答
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)启用

这个对我有用

于 2013-09-13T06:51:41.240 回答
0

只有在所有其他按钮(最小、最大、帮助)也被隐藏时,关闭按钮才会隐藏。

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

this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
于 2013-09-13T11:20:21.173 回答