65.9K
CodeProject is changing. Read more.
Home

Disable Close Button from Title bar of a Window

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.17/5 (5 votes)

Dec 8, 2009

CPOL
viewsIcon

35443

As a developer, you must have found few things that are really haven't thought of earlier. On that note, Say you want to disable Close Button of a window. It is easier to disable other button (using properties available with Form) from control box of the window, or even remove the control box...

As a developer, you must have found few things that are really haven't thought of earlier. On that note, Say you want to disable Close Button of a window. It is easier to disable other button (using properties available with Form) from control box of the window, or even remove the control box altogether. But If you still like to disable the Close button Just follow the steps : 1. Add this using Statement in the header :
using System.Runtime.InteropServices;
2. In the class add :
private const int MF_BYPOSITION = 0x400;

[DllImport("User32")]
private static extern int RemoveMenu(IntPtr hMenu, int nPosition, int wFlags);

[DllImport("User32")]
private static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);

[DllImport("User32")]
private static extern int GetMenuItemCount(IntPtr hWnd);
3. Finally to disable the close button during runtime Use :
IntPtr hMenu = GetSystemMenu(this.Handle, false);
int menuItemCount = GetMenuItemCount(hMenu);
RemoveMenu(hMenu, menuItemCount - 1, MF_BYPOSITION);
You are done. You will actually see a window with disabled close button. Cheers. :rose: