Desativar minimizar e maximizar no Winform?
Pergunta
A WinForms possui essas três caixas no canto superior direito que minimizam, maximizam e fecham o formulário. O que eu quero poder fazer é remover o minimizar e maximizar, mantendo o fechamento.
Eu também o que tornar o fechamento minimizar o formulário em vez de fechá -lo.
Como isso pode ser feito?
Solução
o Form
tem duas propriedades chamadas MinimizeBox
e MaximizeBox
, defina os dois para false
.
Para impedir o fechamento da forma, manuseie o FormClosing
evento, e definido e.Cancel = true;
lá e depois disso, defina WindowState = FormWindowState.Minimized;
, para minimizar o formulário.
Outras dicas
Vincule um manipulador ao FormClosing
evento, em seguida e.Cancel = true
, e defina o formulário this.WindowState = FormWindowState.Minimized
.
Se você quiser fechar o formulário, faça um booleano em toda a classe _close
E, em seu manipulador, defina e.Cancel
para !_close
, para que sempre que o usuário clique no X
na janela, não fecha, mas você ainda pode fechá -lo (sem apenas matá -lo) com close = true; this.Close();
(E apenas para fazer minha resposta completa) Conjunto MaximizeBox
e MinimizeBox
formar propriedades para False
.
Definir MaximizeBox
e MinimizeBox
formar propriedades para False
Clique com o botão direito do mouse no formulário em que deseja escondê -los, escolha controles -> Propriedades.
Nas propriedades, defina
- Caixa de controle -> false
- Minimize a caixa -> false
- Maximize Box -> false
Você fará isso no designer.
Você pode simplesmente desativar maximizar o construtor de forma interno.
public Form1(){
InitializeComponent();
MaximizeBox = false;
}
para minimizar ao fechar.
private void Form1_FormClosing(Object sender, FormClosingEventArgs e) {
e.Cancel = true;
WindowState = FormWindowState.Minimized;
}
Como fazer a forma minimizar quando o fechamento já foi respondido, mas como remover Os botões minimizar e maximizar não foram.
FormBorderStyle
: FixedDialog
MinimizeBox
: false
MaximizeBox
: false
public Form1()
{
InitializeComponent();
//this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.MaximizeBox = false;
this.MinimizeBox = false;
}