it-swarm.com.ru

Windows Forms: Как скрыть кнопку «Закрыть» (x)?

У меня есть модальное диалоговое окно, и мне нужно скрыть кнопку "Закрыть" (X), но я не могу использовать ControlBox = false, потому что мне нужно сохранить кнопки "Свернуть" и "Развернуть".

Мне нужно спрятать только кнопку Закрыть, есть ли способ сделать это?

Большое спасибо!

Обновление: у меня было разрешение отключить его, что проще :) Спасибо всем!

129
stefano m

Вы не можете скрыть это, но вы можете отключить его, переопределив свойство CreateParams формы.

private const int CP_NOCLOSE_BUTTON = 0x200;
protected override CreateParams CreateParams
{
    get
    {
       CreateParams myCp = base.CreateParams;
       myCp.ClassStyle = myCp.ClassStyle | CP_NOCLOSE_BUTTON ;
       return myCp;
    }
}

Источник: http://www.codeproject.com/KB/cs/DisableClose.aspx

132
Daniel A. White

Мы можем скрыть кнопку закрытия в форме, установив this.ControlBox=false;

144
Abhishek.Chopra

Ну, вы можете скрыть это, удалив все системное меню:

private const int WS_SYSMENU = 0x80000;
protected override CreateParams CreateParams
{
    get
    {
        CreateParams cp = base.CreateParams;
        cp.Style &= ~WS_SYSMENU;
        return cp;
    }
}

Конечно, при этом удаляются кнопки минимизации и максимизации.

Если вы удерживаете системное меню, но удаляете элемент закрытия, кнопка закрытия остается, но не работает.

Финальная альтернатива - нарисовать область без клиента самостоятельно. Это довольно сложно понять правильно.

24
David Heffernan

вы можете скрыть закрытое окно, используя

this.ControlBox = false;

и не забудьте добавить пробел в this.Text = " ", чтобы сделать это так

enter image description here

10
Ramgy Borja

Если вы действительно хотите скрыть это, как в "невидимом", то вам, вероятно, придется создать форму без полей и нарисовать компоненты заголовка самостоятельно. Библиотека VisualStyles имеет доступные элементы Windows. Вы также должны были бы добавить обратно в функциональность изменения размера формы или перемещения формы, захватив строку заголовка. Не говоря уже о системном меню в углу.

В большинстве случаев трудно оправдать отсутствие кнопки "закрыть", особенно если вам нужна модальная форма с минимизирующими возможностями. Минимизация модальной формы действительно не имеет смысла.

7
LarsTech

В свойствах вашей формы установите "Control Box" = False, но он также скроет "Свернутый" и "Свернуть".

2
Muhammad Haroon

Вы можете скрыть кнопку закрытия, изменив FormBorderStyle из раздела свойств или программно в конструкторе, используя:

public Form1()
{
InitializeComponent();
this.FormBorderStyle = FormBorderStyle.None;
}

затем вы создаете пункт меню для выхода из приложения.

ура

1
Josh John