Is there a way to disable the exit button on a windows form without having to import the some external .dll’s? I disable the exit button by importing dll’s using the following code but I don’t like it. Is there a simpler (built-in) way?
public Form1() { InitializeComponent(); hMenu = GetSystemMenu(this.Handle, false); } private const uint SC_CLOSE = 0xf060; private const uint MF_GRAYED = 0x01; private IntPtr hMenu; [DllImport('user32.dll')] private static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert); [DllImport('user32.dll')] private static extern int EnableMenuItem(IntPtr hMenu, uint wIDEnableItem, uint wEnable); // handle the form's Paint and Resize events private void Form1_Paint(object sender, PaintEventArgs e) { EnableMenuItem(hMenu, SC_CLOSE, MF_GRAYED); } private void Form1_Resize(object sender, EventArgs e) { EnableMenuItem(hMenu, SC_CLOSE, MF_GRAYED); }
A little poking around found this handy helper class:
Disable Close Button and Prevent Form Being Moved (C# version)
It actually does more than what you’re looking for, but essentially does it very nearly the same way you do in your sample code. The helper class hooks into the load/resize events for you so you don’t have to remember to do it yourself.