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;
}
}