Desativando Minimize & Maximize no WinForm?


98

Os WinForms têm essas três caixas no canto superior direito que minimizam, maximizam e fecham o formulário. O que eu quero ser capaz de fazer é remover o minimizar e maximizar, enquanto mantenho o fechamento.

Também quero fazer o fechamento minimizar o formulário ao invés de fechá-lo.

Como isso pode ser feito?

Respostas:


161

O Formtem duas propriedades chamadas MinimizeBoxe MaximizeBox, defina ambas como false.

Para interromper o fechamento do formulário, manipule o FormClosingevento, configure-o e, e.Cancel = true;em seguida, configure WindowState = FormWindowState.Minimized;para minimizar o formulário.


1
Você não poderia simplesmente definir a caixa de controle como falsa.
krystan homenageia

3
@krystanhonour O OP queria manter o fechamento.
Hans Olsson

16

Definir MaximizeBoxe MinimizeBoxformar propriedades paraFalse


15

Vincule um manipulador ao FormClosingevento, em seguida e.Cancel = true, defina e defina o formulário this.WindowState = FormWindowState.Minimized.

Se você quiser realmente fechar o formulário, faça um booleano para toda a classe _closee, em seu manipulador, defina e.Cancelcomo !_close, de modo que sempre que o usuário clicar Xem na janela, ele não feche, mas você ainda pode fechá-lo (sem apenas matando) comclose = true; this.Close();

(E apenas para tornar minha resposta completa) as propriedades do set MaximizeBoxe do MinimizeBoxformulário para False.


5

Clique com o botão direito do mouse no formulário em que deseja ocultá-los e escolha Controles -> Propriedades.

Em Propriedades, defina

  • Caixa de Controle -> Falso
  • Minimize Box -> False
  • Maximize Box -> False

Você fará isso no designer.


4

Como fazer o formulário minimizar quando o fechamento já foi respondido, mas como remover os botões minimizar e maximizar não foi.
FormBorderStyle: FixedDialog
MinimizeBox: false
MaximizeBox:false


3

você pode simplesmente desabilitar maximizar dentro do construtor de formulário.

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

para minimizar ao fechar.

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
Por favor, acrescente alguma explicação à sua resposta
mechnicov

Amigo, é muito fácil, só preciso ler cada linha de código
Mauricio Kenny

No SO, é uma resposta de baixa qualidade
mechnicov
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.