Bonjour tout le monde.
J'ai 2 Forms, ParentForm et ChildForm. Dans ChildForm, je veux atteindre une méthode définie dans ParentForm.
Donc, ce que j'ai fait, c'est faire appel à une nouvelle instance de ParentForm dans ChildForm :
Au début, cela fonctionnait bien, ma méthode était bien appelée. Mais il s'est avéré que faire cette instance rajoutait donc à chaque fois une nouvelle Form, mais PHYSIQUEMENT.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 private ParentForm parentForm = new ParentForm(); private void ChildForm_FormClosing(object sender, FormClosingEventArgs e) { if (e.Cancel == false) { parentForm.StartProcedure(); } }
En gros, le bug qui arrivait, était que quand je réduisais la ParentForm dans le SysTray, on avait 2 icônes au lieu d'1.
Je réouvre ma ChildForm, je la referme, je réduis ma ParentForm, et hop 3 icônes, et ainsi de suite...
J'ai donc essayé de trouver une parade, en utilisant la méthode de la FormParent et en fermant ensuite cette dernière :
Mais le bug est que quand je fais ceci, tout plante, j'ai un évènement de timer sur ma ParentForm qui n'est plus jamais déclenché. Par contre, quand je réduis ma ParentForm, il n'y a plus qu'1 icône dans le SysTray (le seul point positif ).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 private ParentForm parentForm = new ParentForm(); private void ChildForm_FormClosing(object sender, FormClosingEventArgs e) { if (e.Cancel == false) { this.parentForm.StartProcedure(); this.parentForm.Close(); } }
J'ai pensé mettre ma méthode StartProcedure dans une classe à part où l'on pourrait l'utiliser, mais le gros hic c'est que cette méthode StartProcedure fait appel à des méthodes définies dans ParentForm, et que donc c'est le bazar...
Comment faire sachant que cette méthode ne sera utilisée qu'une seule fois dans ChildForm ?
Edit: Je débute en WinForm.
Merci de votre aide.
Partager