1. Windows Forms中禁用窗体的关闭按钮
添加必要的命名空间:
using System.Runtime.InteropServices;
添加必要的常数和API函数的引用
private const int SC_CLOSE = 0xF060;
private const int MF_ENABLED = 0x00000000;
private const int MF_GRAYED = 0x00000001;
private const int MF_DISABLED = 0x00000002;
[DllImport("user32.dll", EntryPoint = "GetSystemMenu")]
private static extern IntPtr GetSystemMenu(IntPtr hWnd, int bRevert);
[DllImport("User32.dll")]
public static extern bool EnableMenuItem(IntPtr hMenu, int uIDEnableItem, int uEnable);
在窗体的Load事件处理函数内添加代码
private void Form6_Load(object sender, EventArgs e)
{
IntPtr hMenu = GetSystemMenu(this.Handle, 0);
EnableMenuItem(hMenu, SC_CLOSE, MF_DISABLED | MF_GRAYED);
}
2. Windows Forms中禁用窗体的关闭按钮和ALT+F4关闭
protected override CreateParams CreateParams
{
get
{
const int CS_NOCLOSE = 0x200;
CreateParams cp = base.CreateParams;
cp.ClassStyle = cp.ClassStyle | CS_NOCLOSE;
return cp;
}
}
3.不允许拖动窗体和最大化最小化按钮
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
if (m.Msg == 0x84 && m.Result == (IntPtr)2) // 不让拖动标题栏
{
m.Result = (IntPtr)1;
}
if (m.Msg == 0xA3) // 双击标题栏无反应
{
m.WParam = System.IntPtr.Zero;
}
}