写在前面
最近项目中需要禁用窗口的关闭按钮,找了好久找到了2种方法,供同样需求的人使用。
方法1
加载DllIport user32.dll使用GetSystemMenu函数来获取标题栏的菜单句柄,然后使用EnableMenuItem函数来禁用关闭按钮,具体代码如下:
//禁用关闭按钮
IntPtr hMenu = GetSystemMenu(this.Handle, false); //获取程序窗体的句柄
if (hMenu != IntPtr.Zero)
{
EnableMenuItem(hMenu, SC_CLOSE, MF_BYCOMMAND | MF_GRAYED | MF_DISABLED); //禁用关闭功能
}
此方法需要在resize的事件中再执行一次,不然窗口resize之后,关闭按钮就会又变为可用的。
方法2
方法2较为完美,通过重载Form的CreateParams来更改窗口样式,从而达到关闭按钮禁用的效果。具体代码如下:
protected override CreateParams CreateParams
{
get
{
CreateParams createParams = base.CreateParams;
createParams.ClassStyle |= 512;
return createParams;
}
}
这段代码加到你的Form类里面就可以了,完美。