Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Visually remove/disable close button from title bar .NET

I have been asked to remove or disable the close button from our VB .NET 2005 MDI application. There are no native properties on a form that allow you to grey out the close button so the user cannot close it, and I do not remember seeing anything in the form class that will allow me to do this.

Is there perhaps an API call or some magical property to set or function to call in .NET 2005 or later to do this?

~~~~~~~~~~~~~~~~~~~~~~~~~~~~

More information:

I need to maintain the minimize/maximize functionality

I need to maintain the original title bar because the form's drawing methods are already very complex.

like image 323
Jrud Avatar asked Nov 16 '09 16:11

Jrud


2 Answers

Based on the latest information you added to your question, skip to the end of my answer.


This is what you need to set to false: Form.ControlBox Property

BUT, you will lose the minimize and maximize buttons as well as the application menu (top left).

As an alternative, override OnClose and set Cancel to true (C# example):

protected override void OnFormClosing(FormClosingEventArgs e)
{
    if (e.CloseReason != CloseReason.WindowsShutDown && e.CloseReason != CloseReason.ApplicationExitCall)
    {
        e.Cancel = true;
    }

    base.OnFormClosing(e);
}

If neither of these solutions are acceptable, and you must disable just the close button, you can go the pinvoke/createparams route:

How to disable close button from window form using .NET application

This is the VB version of jdm's code:

Private Const CP_NOCLOSE_BUTTON As Integer = &H200
Protected Overloads Overrides ReadOnly Property CreateParams() As    CreateParams
   Get 
      Dim myCp As CreateParams = MyBase.CreateParams 
      myCp.ClassStyle = myCp.ClassStyle Or CP_NOCLOSE_BUTTON 
      Return myCp 
   End Get 
End Property 
like image 95
Philip Wallace Avatar answered Oct 04 '22 16:10

Philip Wallace


Here is a simple way to remove the close button:
1. Select the Form
2. Now go to Properties.
3. Find ControlBox and change the value to False.

This will remove all the Control Buttons (e.g. Minimize, Maximize, Exit) and also the icon also that is in the to left corner before the title.

like image 38
user2849882 Avatar answered Oct 04 '22 16:10

user2849882