2010-02-04 5 views
1

Im utilisant WPF qui a une classe Storyboard qui a un événement Completed.Question d'arguments d'événement C# simple

Je l'utilise comme ceci:

sb.Completed += AddControlToTaskbar; 

private void AddControlToTaskbar(object sender, EventArgs args) 
{ 
    //... 
} 

Comment je passe dans le EventArgs à ma méthode? Il est toujours nulle, et je besoin d'être une classe personnalisée

Merci Mark

Répondre

5

Vous ne passez pas EventArgs à votre méthode, le cadre qui distribue l'événement le fait. Une façon courante de gérer cela est d'envelopper votre méthode AddControlToTaskbar dans une classe qui stocke l'état, .: par exemple

sb.Completed += new MyCustomClass(theStateYouNeedToStore).AddControlToTaskbar; 

Votre constructeur stocke l'état.

class MyCustomClass<T> { 
    private T state; 
    public MyCustomClass(T state) { 
     this.state = state; 
    } 
    public void AddControlToTaskbar(object sender, EventArgs args) { 
     // Do what you need to do, you have access to your state via this.state. 
    } 
} 
+0

ok, et AddControlToTaskbar est-il un délégué public de cette classe? – Mark

+0

J'ai développé l'exemple, j'espère que c'est plus clair. –

+0

merci pour cela ... mais la prochaine chose que je dois faire est de m'assurer qu'après avoir exécuté la méthode 'AddControlToTaskbar', je supprime le gestionnaire du Storyboard ... comment le ferais-je à partir de la méthode' AddControlToTaskbar' dans une autre classe? – Mark