Recherche événement lorsque l'on click sur la croix pour fermer l'application

cs_megamario Messages postés 146 Date d'inscription lundi 15 juin 2009 Statut Membre Dernière intervention 14 février 2013 - 26 juin 2009 à 13:01
cs_megamario Messages postés 146 Date d'inscription lundi 15 juin 2009 Statut Membre Dernière intervention 14 février 2013 - 26 juin 2009 à 15:54
Bonjour,

Je recherche, dans Visual studio en VB.net (2008) l'événement qui se produit lorsque l'on clique sur la croix qui sert généralement à fermer le logiciel.

Afin de pouvoir lancer un message de confirmation.

Je voudrais que cela ne rentre pas en conflit avec la fonction close()

Merci

Technicien en électricité industriel. En cours de reconversion par un BTS IRIS 1er année.
Actuellement en stage dans mon entreprise en R&D.

11 réponses

PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
26 juin 2009 à 13:09
salut,

je dirais... _formclosing ???



    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        If MessageBox.Show("Voulez-vous vraiment quitter l'application?", "Fermeture", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.No Then e.Cancel = True
    End Sub

<!-- Coloration syntaxique vb/vba/vb.net : http://charles.racaud.free.fr/code-syntaxing/ -->
Coloration syntaxique vb/vba/vb.net
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 30
26 juin 2009 à 13:33
Salut megamario ;O)

Effectivement PCPT, j'ajouterais même que cet événement est déclenché à la fermeture du formulaire, pas seulement lors du click sur la croix (du coup aussi lors de la fermeture de l'application).

Pour connaitre la raison cet événement il faut consulter la valeur de la propriété e.CloseReason

@+ Mayzz.

                                                                              
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
0
cs_megamario Messages postés 146 Date d'inscription lundi 15 juin 2009 Statut Membre Dernière intervention 14 février 2013
26 juin 2009 à 13:56
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="ProgId" content="Word.Document" />
<meta name="Generator" content="Microsoft Word 11" />
<meta name="Originator" content="Microsoft Word 11" />
<link rel="File-List" href="file:///D:%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml" />
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:HyphenationZone>21</w:HyphenationZone>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
</w:WordDocument>
</xml><![endif]-->
<!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" LatentStyleCount="156">
</w:LatentStyles>
</xml><![endif]-->
<style>
<!--
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";}
@page Section1
{size:595.3pt 841.9pt;
margin:70.85pt 70.85pt 70.85pt 70.85pt;
mso-header-margin:35.4pt;
mso-footer-margin:35.4pt;
mso-paper-source:0;}
div.Section1
{page:Section1;}
-->
</style>
<!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Tableau Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman";
mso-ansi-language:#0400;
mso-fareast-language:#0400;
mso-bidi-language:#0400;}
</style>
<![endif]-->
Bonjour a vous, merci d'avoir été aussi rapide


Voila mon problème, j'avais vu FormClosed et FormClosing mais cela ne me
conviens pas ou alors faut que je trouve une parade à ma navigation entre les
form.


J'ai plusieurs form un principal qui me sert à stocker mes variables accessible
a tous les autres et sert à la gestion d'ouverture des form. C'est un form mais
n'est pas visible la plus part du temps (je lais laisser comme sa pour
provoquer un affichage le temps de charger les base de donnée pour éviter que
l'utilisateur se demande ce qui se passe)

Cette form reste ouverte tout le temps.

Pour passer d'une form à l'autre ensuite, je les ouvres et ferme grâce à
Me.Close(). Et du coup cela me provoque un FormClosed.







Si vous avez des idées







Technicien en électricité industriel. En cours de reconversion par un BTS IRIS 1er année.
Actuellement en stage dans mon entreprise en R&D.
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
26 juin 2009 à 14:00
une sorte de barre de progression quand besoin quoi...
umm, enlève simplement le controlbox non?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 30
26 juin 2009 à 14:03
Lis mon post plus haut...

If e.CloseRaison = CloseRaison.ApplicationExitCall Then
  
End If

                                                                              
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
0
cs_megamario Messages postés 146 Date d'inscription lundi 15 juin 2009 Statut Membre Dernière intervention 14 février 2013
26 juin 2009 à 14:10
Je n'est pas de barre de progression
En faite a l'ouverture du logiciel cela va chercher sur le réseaux les bases de donnée. Et parfois c'est un peut long pour l'utilisateur si bien qu'il redémarre le logiciel. Donc j'affiche juste une  fenêtre avec le non du logiciel au moins pour que l'utilisateur attend un peut.

Ensuite cette fenêtre je la rend invisible une fois que cela démarre la page d'accueil.
Maintenant quand la page d'accueil se ferme par Me.Close() je repasse par la page de demarrage pour charger ensuite la 2eme page (utilateur).

C'est peut être pas la bonne méthode mais j'ai développer tout comme sa  et les fenêtre passe sans problème de l'une a l'autre. Mais la j'ai quelque souci lorsque je veut fermer le logiciel avec la croix. Donc je cherchais l'evenement de cette croix pour fermer proprement le tout.

Technicien en électricité industriel. En cours de reconversion par un BTS IRIS 1er année.
Actuellement en stage dans mon entreprise en R&D.
0
cs_megamario Messages postés 146 Date d'inscription lundi 15 juin 2009 Statut Membre Dernière intervention 14 février 2013
26 juin 2009 à 14:11
Encore une fois merci [../auteur/MAYZZ/85589.aspx Mayzz].

Mon projet avance bien.

Technicien en électricité industriel. En cours de reconversion par un BTS IRIS 1er année.
Actuellement en stage dans mon entreprise en R&D.
0
cs_megamario Messages postés 146 Date d'inscription lundi 15 juin 2009 Statut Membre Dernière intervention 14 février 2013
26 juin 2009 à 14:19
Par contre il me me dit que:

'CloseRaison' n'est pas un membre de 'System.Windows.Forms.FormClosedEventArgs'.
Le nom 'CloseRaison' n'est pas déclaré.

y a t'il quelque chose a inclure ou a déclarer avant.

Technicien en électricité industriel. En cours de reconversion par un BTS IRIS 1er année.
Actuellement en stage dans mon entreprise en R&D.
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 30
26 juin 2009 à 14:28
Oup's !

Désolé pour l'aurtaugrafe XD

C'est CloseReason.

                                                                              
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 30
26 juin 2009 à 14:32
J'oubliais, ta méthode n'est en effet pas très 'propre' mais elle convient tout de même, cependant, fais attention à la fermeture de l'application à bien décharger toutes les classes instanciés par tes formulaires, et fermer toutes les connexions établies, pour ce faire tu peux utiliser le FormClosing de chaque formulaire...

                                                                              
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
0
cs_megamario Messages postés 146 Date d'inscription lundi 15 juin 2009 Statut Membre Dernière intervention 14 février 2013
26 juin 2009 à 15:54
Bon ba je sais pas si c'est normale mais le résultat de CloseRaison est le même avec la fermeture par la croix ou avec la fonction Me.Close()
 Donc malheureusement cela me conviens pas
Par contre je sais pas si je peut passé par Me.Hide() pour rendre la fenêtre non visible car du coup cela marche mais je voudrais pas ouvrir plusieurs fois la même fenettre (avec une seul visible) je connait pas bien le focntionnement de ce Hide.

Technicien en électricité industriel. En cours de reconversion par un BTS IRIS 1er année.
Actuellement en stage dans mon entreprise en R&D.
0