Rory
Rory

Reputation: 41887

How to make a window have taskbar text but no title bar

How can I make my window not have a title bar but appear in the task bar with some descriptive text? If you set the Form's .Text property then .net gives it a title bar, which I don't want.

        this.ControlBox = false;
        this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
        this.MaximizeBox = false;
        this.MinimizeBox = false;
        this.ShowInTaskbar = true;
        this.Text = "My title for task bar";

I've found a partial solution, to override CreateParams:

    protected override System.Windows.Forms.CreateParams CreateParams
    {
        get
        {
            System.Windows.Forms.CreateParams cp = base.CreateParams;
            cp.Style &= ~0x00C00000; // WS_CAPTION
            return cp;
        }
    }

However this causes my window to be resized as if they have a title bar, ie it's taller than it should be. Is there any good solution to this?

Upvotes: 11

Views: 7933

Answers (4)

LorenzCK
LorenzCK

Reputation: 7491

In my case I have a Form with FormBorderStyle = FormBorderStyle.SizableToolWindow and the following CreateParams override did the trick (i.e. I now have a form without caption and without additional margin for the title, but it keeps the title in the task bar):

protected override System.Windows.Forms.CreateParams CreateParams
{
    get
    {
        var parms = base.CreateParams;
        parms.Style &= ~0x00C00000; // remove WS_CAPTION
        parms.Style |= 0x00040000;  // include WS_SIZEBOX
        return parms;
    }
}

Upvotes: 9

BlackWasp
BlackWasp

Reputation: 4971

Once you have removed the borders with the FormBorderStyle, as mentioned already, you can make it draggable fairly easily. I describe this at http://www.blackwasp.co.uk/DraggableBorderless.aspx.

Upvotes: 2

Jon Schneider
Jon Schneider

Reputation: 26983

One approach to look into might be to set the FormBorderStyle property of your Form to None (instead of FixedDialog).

The drawback to this approach is that you lose the borders of your window as well as the Titlebar. A result of this is that you lose the form repositioning/resizing logic that you normally get "for free" with Windows Forms; you would need to deal with this by implementing your own form move/resize logic in the form's MouseDown and MouseMove event handlers.

I would also be interested to hear about better solutions.

Upvotes: 6

amcoder
amcoder

Reputation: 1151

Just set the border style to None.

this.FormBorderStyle = FormBorderStyle.None;

Upvotes: 2

Related Questions