web-dev-qa-db-fra.com

Windows Forms: Comment masquer le bouton Fermer (x)?

J'ai une boîte de dialogue modale et je dois masquer le bouton Fermer (X), mais je ne peux pas utiliser ControlBox = false, car je dois conserver les boutons Réduire et Agrandir.

J'ai juste besoin de cacher le bouton Fermer, y a-t-il un moyen de le faire?

Merci beaucoup!

Mise à jour: J'ai eu la permission de le désactiver, ce qui est plus simple :) Merci à tous!

131
stefano m

Vous ne pouvez pas le masquer, mais vous pouvez le désactiver en remplaçant la propriété CreateParams du formulaire.

private const int CP_NOCLOSE_BUTTON = 0x200;
protected override CreateParams CreateParams
{
    get
    {
       CreateParams myCp = base.CreateParams;
       myCp.ClassStyle = myCp.ClassStyle | CP_NOCLOSE_BUTTON ;
       return myCp;
    }
}

Source: http://www.codeproject.com/KB/cs/DisableClose.aspx

132
Daniel A. White

Nous pouvons masquer le bouton de fermeture du formulaire en définissant this.ControlBox=false;

146
Abhishek.Chopra

Eh bien, vous pouvez le cacher en supprimant tout le menu système:

private const int WS_SYSMENU = 0x80000;
protected override CreateParams CreateParams
{
    get
    {
        CreateParams cp = base.CreateParams;
        cp.Style &= ~WS_SYSMENU;
        return cp;
    }
}

Bien entendu, cela supprime les boutons Réduire et Agrandir.

Si vous conservez le menu système mais supprimez l'élément fermé, le bouton de fermeture reste mais est désactivé.

L'alternative finale consiste à peindre vous-même la zone non client. C'est assez difficile à faire.

24
David Heffernan

vous pouvez cacher la boîte fermée en utilisant

this.ControlBox = false;

et n'oubliez pas d'ajouter un espace blanc à this.Text = " " pour le rendre comme ceci

enter image description here

12
Ramgy Borja

Si vous voulez vraiment le masquer, comme dans "non visible", vous devrez probablement créer un formulaire sans bordure et dessiner vous-même les composants de la légende. La bibliothèque VisualStyles dispose des éléments Windows disponibles. Vous devez également ajouter à la fonctionnalité de redimensionnement du formulaire ou de déplacement du formulaire en saisissant la barre de légende. Sans parler du menu système dans le coin.

Dans la plupart des cas, il est difficile de justifier que le bouton "Fermer" ne soit pas disponible, en particulier si vous souhaitez un formulaire modal avec des capacités de réduction. Minimiser une forme modale n'a vraiment aucun sens.

7
LarsTech

Dans les propriétés de votre formulaire, définissez 'Zone de contrôle' = Faux, mais masquera également Réduit et Maximisé.

2
Muhammad Haroon

Vous pouvez masquer le bouton de fermeture en modifiant le FormBorderStyle à partir de la section des propriétés ou par programme dans le constructeur en utilisant:

public Form1()
{
InitializeComponent();
this.FormBorderStyle = FormBorderStyle.None;
}

vous créez ensuite un élément de bande de menu pour quitter l'application.

à votre santé

1
Josh John