10
votes

Supprimer visuellement / désactiver le bouton Fermer de la barre de titre .NET

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.

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?

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Plus d'informations:

Je dois conserver la fonctionnalité minimiser / maximiser

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.


0 commentaires

13 Réponses :


3
votes

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".


0 commentaires

1
votes

Vous pouvez définir la propriété contrôlez sur false , mais la barre de titre entière sera partie mais le titre lui-même ...


1 commentaires

Le titre reste toujours, il supprime simplement les autres boutons de contrôle



29
votes

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 


2 commentaires

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.



10
votes

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;
    }
}


1 commentaires

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



-3
votes
Private Sub Form1_Closing(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
    Beep()
    e.Cancel = True
End Sub

0 commentaires

2
votes

Lorsque vous appuyez sur la case X sur le formulaire. Le form1_clusion est fait en premier, puis le form1_closed est terminé.

Le e.cancel = true dans le form1_clusive - empêche form1_close d'être appelé, laissant votre forme toujours active.


0 commentaires

9
votes

Voici un moyen simple d'enlever le bouton de fermeture:

1. Sélectionnez le formulaire
2. Maintenant, allez à Propriétés .
3. Trouver Controlbox et modifier la valeur en FALSE .

Ceci supprimera tous les boutons de commande (E.G. Réduire, optimiser, quitter) et aussi l'icône qui se trouve dans le coin gauche avant le titre.


2 commentaires

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!



-2
votes

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 :)


0 commentaires

0
votes

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()


0 commentaires

0
votes

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 et double-cliquez dessus. Ensuite, tapez: E.Cancel = true


0 commentaires

1
votes

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


0 commentaires

0
votes

Fabriquer un formulaire sans une barre de titre dans Visual Basic.

aller à Propriétés du formulaire et définissez les deux Controlbox et showicon sur false.

ALORS, CLEAR TOUT Le texte du texte Texte Propriété.


0 commentaires

-1
votes

aller aux propriétés et sélectionnez du style ennuyé comme aucun


0 commentaires