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

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

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

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

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

Ответ 1

Вы не можете скрыть его, но вы можете отключить его, переопределив свойство 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

Ответ 2

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

Ответ 3

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

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

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

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

Конечной альтернативой является рисование неклиентской области самостоятельно. Это довольно трудно понять.

Ответ 4

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

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

Ответ 5

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

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

тогда вы создаете элемент меню, чтобы выйти из приложения.

веселит

Ответ 6

В свойствах формы задано "Control Box" = False, но оно также скроет Minimized и Maximize.