Вимкнення мінімізації та максимізації на WinForm?


98

У WinForms є ті три поля у верхньому правому куті, які мінімізують, розгортають та закривають форму. Що я хочу мати можливість, це прибрати мінімізацію та максимізацію, зберігаючи при цьому близькість.

Я також хочу зробити так, щоб закрити форму мінімізувати замість того, щоб закрити її.

Як це можна зробити?

Відповіді:


161

The Formмає дві властивості, що викликаються MinimizeBoxта MaximizeBox, встановлюють обидва значення false.

Щоб зупинити закриття форми, обробіть FormClosingподію та встановіть e.Cancel = true;там, а після цього встановіть WindowState = FormWindowState.Minimized;, щоб згорнути форму.


1
Не могли б ви просто встановити поле керування на false.
вшанування кристану

3
@krystanhonour Оперативна програма хотіла зберегти близькість.
Ганс Олссон,


15

Прив’яжіть обробник до FormClosingподії, потім встановіть e.Cancel = trueі встановіть форму this.WindowState = FormWindowState.Minimized.

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

(І просто для того, щоб моя відповідь була повною) встановіть MaximizeBoxі MinimizeBoxформуйте властивості до False.


5

Клацніть правою кнопкою миші форму, в якій ви хочете їх сховати, оберіть елементи керування -> Властивості.

У Властивості встановіть

  • Блок керування -> Помилковий
  • Згорнути поле -> False
  • Розгорнути поле -> Неправильно

Ви зробите це в дизайнері.


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

Мій друже, це дуже легко, лише потрібно прочитати кожен рядок коду
Маурісіо Кенні,

На ТО це низькоякісна відповідь
mechnicov
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.