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?

sooprise
fonte

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.

Hans Olsson
fonte
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

volodia
fonte
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.

dlras2
fonte
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.

Arunkumar Pushparaj
fonte
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

Colchetes
fonte
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;
}
Sameera R.
fonte
1
public Form1()
{
InitializeComponent();
//this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.MaximizeBox = false;
this.MinimizeBox = false;
}
Mauricio kenny
fonte
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