Windows Forms: как скрыть кнопку Закрыть (x)?
У меня есть модальный диалог, и нужно скрыть кнопку Закрыть (X), но я не могу использовать
ControlBox = false, потому что мне нужно держать кнопки свернуть и развернуть.
Мне нужно скрыть только кнопку Закрыть, есть ли способ сделать это?
Спасибо большое!
обновление: у меня было разрешение отключить его, что проще :) спасибо всем!
8 ответов:
вы не можете скрыть его, но вы можете отключить его, переопределив свойство 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; } }
Ну, вы можете скрыть его, удалив все системное меню:
private const int WS_SYSMENU = 0x80000; protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.Style &= ~WS_SYSMENU; return cp; } }конечно, при этом удаляются кнопки свернуть и развернуть.
Если вы сохраняете системное меню, но удаляете пункт Закрыть, то кнопка Закрыть остается, но отключена.
последняя альтернатива-нарисовать неклиентскую область самостоятельно. Это довольно трудно сделать правильно.
Если вы действительно хотите скрыть его, как в "не видно", то вам, вероятно, придется создать форму без границ и нарисовать компоненты заголовка самостоятельно. Библиотека VisualStyles содержит доступные элементы Windows. Вам также придется добавить обратно в функциональность изменения размера формы или перемещения формы, захватив панель заголовка. Не говоря уже о меню в углу.
в большинстве случаев трудно оправдать отсутствие кнопки "Закрыть", особенно когда вы хотите модальную форму с минимальными возможностями. Минимизация модальной формы действительно не имеет смысла.
в свойствах вашей формы установите 'Control Box' = False, но он также скроет минимизацию и максимизацию.
Ну вы можете скрыть кнопку Закрыть, изменив FormBorderStyle из раздела свойств или программно в конструкторе с помощью:
public Form1() { InitializeComponent(); this.FormBorderStyle = FormBorderStyle.None; }затем создать пункт меню полосы для выхода из приложения.
ура
если это опция, которую вы можете установить
this.FormBorderStyle = FormBorderStyle.None;затем воссоздайте кнопки свернуть и развернуть
private void button1_Click(object sender, EventArgs e) { this.WindowState = FormWindowState.Maximized; } private void button2_Click(object sender, EventArgs e) { this.WindowState = FormWindowState.Minimized; }

Comments