Hey people, here is a question that is troubling me from quite a long time.

I want to diable the (x) button on form_load event, to prevent user from directly closing the application.

How may I achieve this ?

4 Years
Discussion Span
Last Post by Rahul47

Go to FormClosing event of the form and add e.Cancel=True.

Edited by Fame95


@Fame95: I Am aware of this. But I Want user to see (x) button disabled when form is loaded.

Private Const CP_NOCLOSE_BUTTON As Integer = &H200
    Protected Overrides ReadOnly Property CreateParams() As CreateParams
            Dim myCp As CreateParams = MyBase.CreateParams
            myCp.ClassStyle = myCp.ClassStyle Or CP_NOCLOSE_BUTTON
            Return myCp
        End Get
    End Property

That should work, put into the Form's code you wish to disable under:

Public Class Form

Credit goes to @Fame95 His answer was correct.

Edited by Doogledude123: Gave credit where credit was deserved


you may remove that button on the form's property window, find ControlBox and set to False.


If you want to insist on doing it in run time use Me.ControlBox = False or for C# this.ControlBox = false;


Be advised that setting the class style to CS_NOCLOSE (named CP_NOCLOSE_BUTTON in Doogledude's example) will also prevent Alt-F4 from closing the window. You can achieve the same effect while retaining Alt-F4 closure by PInvoking the RemoveMenu function.

   Private Const MF_BYCOMMAND As Integer = 0

   <DllImport("User32")> _
   Private Shared Function RemoveMenu(ByVal hMenu As IntPtr, ByVal nPosition As Integer, ByVal wFlags As Integer) As Integer
   End Function

   <DllImport("User32")> _
   Private Shared Function GetSystemMenu(ByVal hWnd As IntPtr, ByVal bRevert As Boolean) As IntPtr
   End Function

   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      Dim hMenu As IntPtr = GetSystemMenu(Me.Handle, False)
      RemoveMenu(hMenu, SC_CLOSE, MF_BYCOMMAND)
   End Sub

To All

Thanks for contributing to this discussion. I learned a lot from you people.
The smart answer i will go with Me.ControlBox = False. Because it uses inbuilt function and saved my time.
Despite the fact that it does not provide maximize and minimize button, it can be minimized from startbar. And Its Cool

Special Thanks to tinstaafl.
And Kudos to all.

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.