Как сделать, чтобы у окна был текст панели задач, но нет строки заголовка - PullRequest
10 голосов
/ 13 октября 2008

Как я могу сделать так, чтобы у моего окна не было строки заголовка, а появлялось на панели задач какой-нибудь описательный текст? Если вы устанавливаете свойство формы .Text, тогда .net присваивает ему строку заголовка, чего я не хочу.

        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";

Я нашел частичное решение для переопределения CreateParams:

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

Однако это приводит к изменению размера моего окна, как если бы оно имело строку заголовка, т.е. оно выше, чем должно быть. Есть ли хорошее решение для этого?

Ответы [ 4 ]

7 голосов
/ 02 июля 2010

В моем случае у меня есть Форма с FormBorderStyle = FormBorderStyle.SizableToolWindow, и следующее переопределение CreateParams сделало трюк (т.е. теперь у меня есть форма без заголовка и без дополнительного поля для заголовка, но она сохраняет заголовок на панели задач ):

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;
    }
}
6 голосов
/ 13 октября 2008

Один из подходов, на которые стоит обратить внимание, - установить для свойства FormBorderStyle вашего Form значение None (вместо FixedDialog).

Недостатком этого подхода является то, что вы теряете границы своего окна, а также заголовок заголовка. В результате вы теряете логику перемещения / изменения размера форм, которую вы обычно получаете «бесплатно» с помощью Windows Forms; вам придется справиться с этим, реализовав собственную логику перемещения / изменения размера формы в обработчиках событий MouseDown и MouseMove формы.

Мне также было бы интересно услышать о лучших решениях.

2 голосов
/ 13 октября 2008

После того, как вы удалили границы с помощью FormBorderStyle, как уже упоминалось, вы можете сделать его перетаскиваемым довольно легко. Я описываю это в http://www.blackwasp.co.uk/DraggableBorderless.aspx.

2 голосов
/ 13 октября 2008

Просто установите стиль границы на Нет.

this.FormBorderStyle = FormBorderStyle.None;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...