On m'a demandé de supprimer ou de désactiver le bouton de fermeture de notre application VB .NET 2005 MDI. Il n'y a pas de propriétés natales sur une forme qui vous permet de griser le bouton de fermeture de près afin que l'utilisateur ne puisse pas le fermer, et je ne me souviens pas de voir quoi que ce soit dans la classe de formulaire qui me permettra de le faire. P>
existe peut-être un appel API ou une propriété magique pour définir ou fonctionner pour appeler en .net 2005 ou plus tard pour faire cela? P>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ P>
Plus d'informations: P>
Je dois conserver la fonctionnalité minimiser / maximiser p>
J'ai besoin de maintenir la barre de titre d'origine car les méthodes de dessin du formulaire sont déjà très complexes. P>
13 Réponses :
Vous devriez être capable de remplacer l'événement OnClose du formulaire. Ceci est courant lorsqu'une application minimise le plateau système lorsque "fermée". P>
Vous pouvez définir la propriété contrôlez code> sur
false code>, mais la barre de titre entière sera partie mais le titre lui-même ... P>
Le titre reste toujours, il supprime simplement les autres boutons de contrôle
Basé sur les dernières informations que vous avez ajoutées à votre question, passez à la fin de ma réponse.
C'est ce que vous devez définir sur FALSE: Propriété Form.ControlBox P>
Mais, vous perdrez le minimiser et Maximisez les boutons ainsi que le menu d'application (en haut à gauche). p>
comme alternative, remplacez-la et définissez Annuler sur TRUE (exemple C #): P>
Private Const CP_NOCLOSE_BUTTON As Integer = &H200 Protected Overloads Overrides ReadOnly Property CreateParams() As CreateParams Get Dim myCp As CreateParams = MyBase.CreateParams myCp.ClassStyle = myCp.ClassStyle Or CP_NOCLOSE_BUTTON Return myCp End Get End Property
Je pensais aussi ça. Malheureusement, j'ai oublié de préciser mais j'ai besoin de la fonctionnalité minimiser / maximiser. Je pourrais les faire de manière programmatique, mais j'aurais besoin d'ajouter essentiellement ma propre barre d'outils avec les boutons minimiser et maximiser.
J'ai ajouté au bas de ma réponse.
Vous pouvez désactiver le bouton de fermeture et l'élément de menu Fermer dans le menu Système en modifiant le "style de classe" de la fenêtre. Ajoutez le code suivant à votre formulaire:
const int CS_NOCLOSE = 0x200; protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.ClassStyle |= CS_NOCLOSE; return cp; } }
Private const cs_noclose comme integer = & H200 Protégé Protéged Supprime les créateurs de biens libéonnements () comme Creatreparams Get Dim CP comme Creatreparams = myBase.Creatreparams cp.classstyle = cp.classstyle ou cs_noclose retour cp fin get de la propriété finale
Private Sub Form1_Closing(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing Beep() e.Cancel = True End Sub
Lorsque vous appuyez sur la case X sur le formulaire.
Le Le form1_clusion code> est fait en premier, puis le
form1_closed code> est terminé. P>
e.cancel = true code> dans le
form1_clusive code> - empêche
form1_close code> d'être appelé, laissant votre forme toujours active. P >
Voici un moyen simple d'enlever le bouton de fermeture: Ceci supprimera tous les boutons de commande (E.G. Réduire, optimiser, quitter) em> et aussi l'icône qui se trouve dans le coin gauche avant le titre. P>
1. Sélectionnez le formulaire
2. Maintenant, allez à Propriétés Code>.
3. Trouver Controlbox code> et modifier la valeur en
FALSE code>. P>
Cela ne répond pas à sa question puisqu'il a dit qu'il avait besoin de fonctionnalités min / max.
Cela a résolu mes besoins, cependant, merci!
Il suffit de sélectionner le formulaire requis et dans la section Propriétés, définissez Controlbox = false Qui vient de travailler pour moi :) p>
Ce que jmweb a dit ici est ok aussi. Le bouton X Fermer n'allongera pas si vous annulez l'événement sur la fermeture de la forme. Mais ce faisant, vous devez libérer les processus nécessaires au formulaire, puis fermer le formulaire.
Me.Dispose() Me.Close()
Sélectionnez (ou cliquez sur) le formulaire lui-même
Cliquez sur les événements dans la fenêtre de la propriété (la petite icône de boulon éclair).
Recherchez Form.Flèvement code> et double-cliquez dessus.
Ensuite, tapez:
E.Cancel = true code> p>
empêche de fermer le formulaire, mais cachez-la:
Private Sub Form1_Closing(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing Me.WindowState = FormWindowState.Minimized Me.Visible=false e.Cancel = True End Sub
aller à ALORS, CLEAR Propriétés du formulaire CODE> et définissez les deux
Controlbox code> et
showicon code> sur false. p>
Texte CODE> Propriété. P>
aller aux propriétés et sélectionnez du style ennuyé comme aucun p>