Как сделать так, чтобы в окне был текст панели задач, но не было строки заголовка

Как сделать так, чтобы в моем окне не было строки заголовка, а отображалось на панели задач с некоторым описательным текстом? Если вы установите свойство формы .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;
        }
    }

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
10
0
7 061
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Просто установите для стиля границы значение «Нет».

this.FormBorderStyle = FormBorderStyle.None;
Ответ принят как подходящий

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

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

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

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

Хороший и примерный, но в реальном мире, но при перетаскивании формы часто возникает больше соображений, например, мы не хотим перетаскивать, если мышь находится над элементом управления или между элементами управления, или хотим изменить размер, если он близок к границы.

dbkk 13.10.2008 21:59

Абсолютно. Вам также необходимо зафиксировать это, проверяя, насколько вы близки к границе формы, изменяя указатель мыши, получая предпочтительный размер границы из Windows и т. д. Однако это слишком много для одного примера - возможно, я создам другой.

BlackWasp 17.10.2008 12:32

В моем случае у меня есть форма с 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;
    }
}

Другие вопросы по теме