Désactiver minimiser et maximiser sur WinForm?


98

WinForms a ces trois cases dans le coin supérieur droit qui réduisent, maximisent et ferment le formulaire. Ce que je veux pouvoir faire, c'est supprimer le minimiser et maximiser, tout en gardant la proximité.

J'ai aussi de quoi faire en sorte que la fermeture minimise le formulaire au lieu de le fermer.

Comment cela peut-il être fait?

Réponses:


161

Le Formpossède deux propriétés appelées MinimizeBoxet MaximizeBox, définissez-les toutes les deux sur false.

Pour arrêter la fermeture du formulaire, gérez l' FormClosingévénement et définissez-le e.Cancel = true;ici et après cela, définissez WindowState = FormWindowState.Minimized;pour réduire le formulaire.


1
Ne pourriez-vous pas simplement définir la boîte de contrôle sur false.
krystan honore

3
@krystanhonour L'OP voulait cependant rester proche.
Hans Olsson

16

Définir MaximizeBoxet MinimizeBoxformer les propriétés surFalse


15

Liez un gestionnaire à l' FormClosingévénement, puis définissez e.Cancel = trueet définissez le formulaire this.WindowState = FormWindowState.Minimized.

Si vous voulez fermer le formulaire un jour, créez un booléen à l'échelle de la classe _closeet, dans votre gestionnaire, définissez-le e.Cancelsur !_close, de sorte que chaque fois que l'utilisateur clique Xsur la fenêtre, il ne se ferme pas, mais vous pouvez toujours le fermer (sans juste le tuer) avecclose = true; this.Close();

(Et juste pour que ma réponse soit complète) définissez MaximizeBoxet MinimizeBoxformez les propriétés sur False.


5

Cliquez avec le bouton droit sur le formulaire sur lequel vous souhaitez les masquer, choisissez Contrôles -> Propriétés.

Dans Propriétés, définissez

  • Boîte de contrôle -> Faux
  • Réduire la boîte -> Faux
  • Maximiser la boîte -> Faux

Vous ferez cela dans le concepteur.


4

Comment réduire le formulaire lors de la fermeture a déjà été répondu, mais comment supprimer les boutons de réduction et d'agrandissement ne l'étaient pas.
FormBorderStyle: FixedDialog
MinimizeBox: false
MaximizeBox:false


3

vous pouvez simplement désactiver maximiser le constructeur de formulaire.

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

à minimiser lors de la fermeture.

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
Veuillez ajouter quelques explications à votre réponse
mechnicov

Mon ami, c'est très facile, il suffit de lire chaque ligne de code
Mauricio Kenny

Sur SO, c'est une réponse de mauvaise qualité
mechnicov
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.