Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

.NET hide titlebar but keep border

I was wondering how to hide the titlebar of a form but keep the original border, like e.g Dropbox does: screenshot

Thanks in advance!

like image 968
Jonas Kohl Avatar asked Jan 31 '16 12:01

Jonas Kohl


2 Answers

Set FormBorderStyle to FormBorderStyle.Sizable or FormBorderStyle.SizableToolWindow and set Text to an empty string, and ControlBox to false

Note that FixedToolWindow won't work, it will remove the border. If you don't want it to be sizable, use SizableToolWindow and add this to the form's codebehind (adding both languages since you don't specify and tagged the question with both):

In vb.net:

Protected Overrides Sub WndProc(ByRef message As Message)               
    If message.Msg = &H84 Then ' WM_NCHITTEST
        message.Result = CType(1, IntPtr)
        Return
    End If    
    MyBase.WndProc(message)
End Sub

In C#:

protected override void WndProc(ref Message message)
{
    if (message.Msg == 0x0084) // WM_NCHITTEST
        message.Result = (IntPtr)1;   
    else base.WndProc(ref message);
}
like image 74
Jcl Avatar answered Nov 15 '22 22:11

Jcl


Here is a simple way:

this.ControlBox = false;
this.Text = string.Empty;

If the Form is designed to be a pop-up dialog, you might want to add the following line:

this.ShowInTaskBar = false;

That keeps the Form from appearing in the taskbar.

like image 34
Smith Avatar answered Nov 15 '22 20:11

Smith