Savoir quand on clic sur le bouton fermer [Résolu]

Signaler
Messages postés
35
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
23 mai 2007
-
Messages postés
46
Date d'inscription
lundi 19 mars 2007
Statut
Membre
Dernière intervention
22 mai 2009
-
Bonjour je pense que le titre est assez clair. J'aimerais savoir s'il y a la fonction de la petite croix rouge en haut a droite (bouton fermer) d'une form peut etre modifier. Quelqu'un peut-il m'aider

10 réponses

Messages postés
46
Date d'inscription
lundi 19 mars 2007
Statut
Membre
Dernière intervention
22 mai 2009

Et ben j'ai trouvé

Private
Sub Form1_FormClosing(
ByVal sender
As System.Object,
ByVal e
As System.Windows.Forms.FormClosingEventArgs)
Handles
MyBase.FormClosing

If e.CloseReason.UserClosing
Thene.Cancel =

True

Me.Hide()

End
If

End
Sub

Mais je comprend pas
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
38
regarde les évènement QueryUnload et Unload, tu as un paramètre qui te donne l'indication de la raison de la fermeture.
Une de ces raisons est le click sur la croix (appelé menu système, je crois)

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
46
Date d'inscription
lundi 19 mars 2007
Statut
Membre
Dernière intervention
22 mai 2009

Y-aurait-il moyen de dévider le bouton "fermer" pour que les fênetre se minimise
Un truc du genre :
Private sub le_bouton_X_click (.....) handles bouton.click
Me.hide
End Sub
Tu sais pas comment faire ca ?
J'ai cherché mais j'ai trouvé qu'en delphi
Messages postés
46
Date d'inscription
lundi 19 mars 2007
Statut
Membre
Dernière intervention
22 mai 2009

J'ai trouvé ca :

PrivateSub Form1_FormClosing(ByVal sender As System.Object, _
ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles _
MyBase.FormClosing
    If e.CloseReason.UserClosing Then
        e.Cancel = True
    EndIf
EndSub

 mais quand je le modifie en ca :

PrivateSub Form1_FormClosing(ByVal sender As System.Object, _
ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles _
MyBase.FormClosing
Me.Hide ()
EndSub

ca va pas
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
38
    Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing

        'Si fermeture volontaire par l'utilisateur
        If e.CloseReason = CloseReason.UserClosing Then

            'fermeture annulé
            e.Cancel = True

            'A la place, reduction et masquage de la fenetre
            Me.Hide()

        End If

    End Sub

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
46
Date d'inscription
lundi 19 mars 2007
Statut
Membre
Dernière intervention
22 mai 2009

Merci bien
Mais il y a un mais ...
J'ai fait un notifyicon quand je clique sur l'icone j'ai le menu que j'ai mis avec le bouton fermer (Me.close) le programme ben il le ferme pas !
Logique vu que je lui dit que si on le ferme il se masque ...
N'y a t il pas une variante pour avoir un événement uniquement quand j'appuie sur le bouton X ?
Merci ,
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
38
ce que tu peux faire, c'est dans le bouton qui doit fermer l'application, au lieu d'appeler Me.Close pour fermer la fenetre, tu appele Application.Closing. A vérifier avant que tout à été correctement fermé et que cette fenetre est bien la dernière à fermer.

Ensuite dans Form_Closing tu filtre les raisons de la fermeture. Pour un click sur la croix, tu auras UserClosing, dans ce cas tu réduit la fenetre et t'annule la fermeture.
Dans les autres cas, et notamment sur le click du bouton ou tu obtiendra ApplicationExitCall comme raison,  tu laisse faire la fermeture normale.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
46
Date d'inscription
lundi 19 mars 2007
Statut
Membre
Dernière intervention
22 mai 2009

Donc si je comprend bien .
Me.Close va avec UserClosing
et
Application.Closing va avec ApplicationExitCall

Le problème si je met Application.Closing à la place de Me.Close j'ai Erreur 4 'Closing' n'est pas un membre de 'System.Windows.Forms.Application'. 

Aussi non ApplicationExitCall jz dois le mettre ou ? pres de UserClosing cad bouton X
ou quand j'appuie sur mon bouton fermer

Je suis un peux perdu mais j'ai essayé dans tout les sens
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
38
Excuse moi, je me suis tromper, c'est Application.Exit

Après ApplicationExitCall tu n'en a pas vraiment besoin, tu peux conserver le code de Form_Closing que je t'avais donné avant.

Mais si tu veux voici un exemple de l'utilisation que tu pourrais en faire :

Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing

    'Si fermeture volontaire par l'utilisateur
    If e.CloseReason = CloseReason.UserClosing Then
        'fermeture annulé
        e.Cancel = True
        'A la place, reduction et masquage de la fenetre
        Me.Hide()
    ElseIf e.CloseReason = CloseReason.ApplicationExitCall Then
        'Si bouton Fermer
        If MessageBox.Show("Fermeture de définitive de l'application.", "ATTENTION", _
                           MessageBoxButtons.OKCancel, MessageBoxIcon.Warning, _
                           MessageBoxDefaultButton.Button2) = Windows.Forms.DialogResult.Cancel Then
            'Choix du bouton Annuler --> Annulation de la fermeture
            e.Cancel = True
            'A la place, reduction et masquage de la fenetre
            Me.Hide()
        End If
    End If
End Sub

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
46
Date d'inscription
lundi 19 mars 2007
Statut
Membre
Dernière intervention
22 mai 2009

C'est bon ca fontionne impec
Voila à quoi tu m'as aidé (mon premier programme)
http://romainvv.be/divers/WoWBureau_v1.2.exe
Merci beaucoup