Windows窗体是否可以在没有关闭按钮的情况下显示最小和最大按钮?

时间:2010-06-24 20:13:41

标签: c# .net windows

有没有办法(在C#中)只显示最小化和最大化按钮的表单?没有关闭按钮?

删除关闭按钮(我知道)的唯一方法是:

form.ControlBox = false;

但这也摆脱了其他按钮。

2 个答案:

答案 0 :(得分:2)

有一篇文章here展示了如何做到这一点。它需要使用非托管User32.dll

答案 1 :(得分:2)

我曾写过一个函数来执行此操作

public partial class Form2 : Form
{
    public Form2()
    {
        InitializeComponent();
        if (EnableMenuItem(GetSystemMenu(this.Handle, 0), SC_CLOSE, MF_GRAYED) == -1)
            throw new Win32Exception("The message box did not exist to gray out its X");
    }
    private const int SC_CLOSE = 0xF060;
    private const int MF_GRAYED = 0x1;
    [DllImport("USER32")]
    internal static extern int EnableMenuItem(IntPtr WindowHandle, int uIDEnableItem, int uEnable);
    [DllImport("USER32")]
    internal static extern IntPtr GetSystemMenu(IntPtr WindowHandle, int bReset);
}

注意alt-f4仍然有效,当您从任务栏查看时,右键单击“关闭此窗口”。 (在Windows 7中测试)