Отключение минимизации и развертывания в WinForm?


99

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

Я также, что сделать close минимизировать форму вместо ее закрытия.

Как это может быть сделано?

Ответы:


162

У Formнего есть два свойства, называемых MinimizeBoxи MaximizeBox, установите для них оба false.

Чтобы остановить закрытие формы, обработайте FormClosingсобытие и установите его e.Cancel = true;там, а после этого установите WindowState = FormWindowState.Minimized;, чтобы минимизировать форму.


1
Не могли бы вы просто установить для блока управления значение false.
krystan honor

3
@krystanhonour Однако ОП хотел держаться подальше.
Ханс Олссон,


15

Привяжите обработчик к FormClosingсобытию, затем установите e.Cancel = trueи задайте форму this.WindowState = FormWindowState.Minimized.

Если вы хотите когда-либо действительно закрыть форму, сделайте логическое значение для всего класса _closeи в своем обработчике установите e.Cancelзначение !_close, чтобы всякий раз, когда пользователь нажимает кнопку Xв окне, оно не закрывается, но вы все равно можете закрыть его (без просто убивая его) сclose = true; this.Close();

(И просто для того, чтобы мой ответ был полным) установить MaximizeBoxи MinimizeBoxсформировать свойства в False.


5

Щелкните правой кнопкой мыши форму, в которой вы хотите их скрыть, выберите «Элементы управления» -> «Свойства».

В свойствах установите

  • Блок управления -> Ложь
  • Свернуть окно -> Ложь
  • Развернуть окно -> Ложь

Вы сделаете это в дизайнере.


4

Как сделать так, чтобы форма сворачивалась при закрытии, уже ответили, а как убрать кнопки сворачивания и разворачивания - нет.
FormBorderStyle: FixedDialog
MinimizeBox: false
MaximizeBox:false


3

вы можете просто отключить конструктор максимизации внутри формы.

 public Form1(){
     InitializeComponent();
     MaximizeBox = false;
 }

свести к минимуму при закрытии.

private void Form1_FormClosing(Object sender, FormClosingEventArgs e) {
    e.Cancel = true;
    WindowState = FormWindowState.Minimized;
}

1
public Form1()
{
InitializeComponent();
//this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.MaximizeBox = false;
this.MinimizeBox = false;
}

2
Пожалуйста, добавьте пояснение к своему ответу
mechnicov

Мой друг, это очень просто, нужно только прочитать каждую строчку кода
Маурисио Кенни

На SO это некачественный ответ
mechnicov
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.