bonjour voila j'ai une méthode a exécuter avant la fermeture d'une fenetre enfant. Cette fenetre est dans un MDI.
je crois que l'évènement est FormClosingEventArgs mais je ne sais pas comment faire.
bonjour voila j'ai une méthode a exécuter avant la fermeture d'une fenetre enfant. Cette fenetre est dans un MDI.
je crois que l'évènement est FormClosingEventArgs mais je ne sais pas comment faire.
Bonjour,
ce que tu indiques n'est pas un évenement mais correspond une classe d'arguments associés à un évenement.
L'évenement que tu recherches est "formClosing" et non pas "FormClosingEventArgs".
Pour associer du code à cette évenement procède de cette manière:
nomFormulaire.FormClosing += puis appuie sur tab deux fois visual studio va te générer la fonction avec la bonne signature (tu retrouveras les arguments FormClosingEventArgs) et dans cette fonction tu pourras mettre le code qui s'exécutera à la fermeture de ton formulaire.
Si tu veux que le code s'execute APRES et non AVANT la fermeture de ta fenetre utilise l'évenement FormClosed.
En espérant t'avoir aider![]()
oui, merci pour ton astuce de la tabulation.
form_client = formulaire enfant dans form_general (parent)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7private void form_client_FormClosing(object sender, FormClosingEventArgs e) { //------ MessageBox.Show("test"); //------ }
j'ai copié ce code de form_client vers form_general mais il ne se passe rien.
Je ne comprends pas trop; ce code appartient à la classe du formulaire client, il doit rester dedans. Peut tu nous montrer ton code?
disons que j'ai un form_general qui possède un menu, quand je clique sur ce menu je choisi une fenetre a ouvrir dans mon MDI (form_general)
exemple form_client s'ouvre dans form_general quand il est ouvert, à sa fermeture (avant) j'aimerai faire exécuter une méthode comme j'ai dis plus haut.
Je me suis dit pourquoi pas dire a cette fenêtre si tu te ferme alors exécute ma méthode.
ok j'ai compris comment exécuter ma méthode qui se trouve dans un autre form ?
j'aimerai l'exécuter dans form_client mais cette méthode se trouve dans form_general.
Normalement si tu ajoute dans le constructeur le code que je t'ai donné et après avoir écrit le code de ta fonction (en l'occurence l'appel à messageBox) c'est bon, tu n'as plus rien à faire; lorsque ton formulaire client se fermera tu auras ton message. Il ne faut pas que tu déplace le code de ta fonction
dans form_client je peux faire
info étant ma méthode public dans form_general pourquoi sa change pas les paramètres ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 private void form_protection_FormClosing(object sender, FormClosingEventArgs e) { MessageBox.Show("test"); form_generale formulaire = new form_generale(); formulaire.info(true); }
dans info, sa doit changer des propriétés de form_general.
Si je comprends bien (ou alors je me trompe ) dans ton form_generale tu as un MDIChild formClient , donc dans la fonction form_protection_FormClosing tu n'as pas besoin de récréer un form_generale il faut que tu récupère la référence sur le form_generale que tu as déjà créé . Pour cela tu as la propriété Parent, ou MDIParent , je ne sais plus, grâce à celle-ci tu vas pouvoir recuperer ton form_generale , il faut que tu le "cast" en form_generale
au passage quelque conseils de notation: evite les underscore dans le nom des classes et met des majuscules; préfére FormGeneral (ce n'est que mon avis) et pour les fonctions, commence aussi par une majuscule, en essayant d'être explicite:
Code : Sélectionner tout - Visualiser dans une fenêtre à part ((form_generale )this.Parent).info(true);
Code : Sélectionner tout - Visualiser dans une fenêtre à part form.SetInfo(true);![]()
la solution étant:
Franchement je te remercie par ton aide et tes conseils il est vrai que je suis trop habitué aux autres langages (php, jquery, javascript, css et autres) et que je suis novice en c#. (il y a des nouveaux cours sur le SDZ, j'ai repris la lecture...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ((form_generale)MdiParent).info(true);
@ bientôt![]()
Partager