2010-07-21 4 views
2

Supposons que j'ouvre un formulaire et que je souhaite y attacher une commande après sa fermeture.Délégué conditionnel Question

FormZombie FormZombie = new FormZombie(); 
FormZombie.Show(); 
FormZombie.FormClose += delegate{Utilities.DoSomethingCool()}; 

Comment puis-je faire déclencheur Utilities.DoSomethingCool() exécute uniquement en fonction de ce qui se passe dans FormZombie?

Répondre

8

Vous pouvez ajouter le chèque conditionnel à votre délégué:

FormZombie formZombie = new FormZombie(); 
formZombie.Show(); 
formZombie.FormClose += 
    delegate 
    { 
     if (formZombie.AteEnoughBrains) 
      Utilities.DoSomethingCool(); 
    }; 
+2

+1 pour faire référence à la consommation de cerveaux. –

+0

Reed, comment puis-je l'implémenter si j'ai deux formes de profondeur? Form1 s'ouvre Form2, Form2 ouvre Form3, Form3.Closed + = delegate {méthode de Form1} – sooprise

+0

Vous devez passer une référence dans les formulaires - par exemple: Donner à Form1 une référence à votre instance form1 (this), puis Form2 peut passer le Form1 instance dans Form3, etc De cette façon, il peut gérer cela directement. –