2012-11-06 6 views
7

meine Frage ist, wie kann ich einige Argumente in Dispatchertimer.Tick Ereignis senden hier ist der Code: was ich wollteein zusätzliches Argument in Dispatchertimer.Tick Veranstaltung senden

dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick); 

    private void dispatcherTimer_Tick(object sender, EventArgs e) 
    { 
     //.Text = DateTime.Now.Second.ToString(); 

    } 

einen Integer-Wert bei dispatcheTimer_Tick erhalten ist Was ich wollte, ist etwas wie das

private void dispatcherTimer_Tick(object sender, EventArgs e,int a) 
    { 
     //.Text = DateTime.Now.Second.ToString(); 

    } 

wie ein Wert von einem aufrufenden Punkt senden ??

Antwort

0

Wenn Sie a zu dem Zeitpunkt wissen, dass Sie den Event-Handler anbringen, können Sie etwas tun:

int a = 0; 
dispatcherTimer.Tick += (sender, e) => 
    { 
     /* a is available here */ 
    }; 
7

Während eine Reihe von Möglichkeiten gibt es, finde ich es am bequemsten, anonyme Methoden zu verwenden, Variablen zu schließen über, wenn dies zu tun:

int number = 5; 
dispatcherTimer.Tick += (s, args) => 
{ 
    string value = someMethod(); 
    string otherValue = DateTime.Now.Second.ToString() 
    myControl.Text = value + otherValue + number; 
} 
:

dispatcherTimer.Tick += (s, args) => myControl.Text = DateTime.Now.Second.ToString(); 

Wenn Sie eine Handvoll Zeilen haben könnten Sie auch wie etwas mehr tun

Wenn Sie mehr als nur eine Handvoll von Linien haben dann immer noch Sie wahrscheinlich eine andere Methode wollen, aber Sie können einen Lambda verwenden, die Methode aufzurufen:

int value = 5; 
dispatcherTimer.Tick += (s, args) => myRealMethod(someControl, value); 

public void myRealMethod(Control someControl, int value) 
{ 
    someControl.Text = value; 
} 

Dieses für beide ignorieren Parameter des Ereignishandler bequem Delegieren Sie, wenn Sie sie nicht brauchen (ich verwende fast nie sender, überlasse ich das eigentliche Objekt selbst, wenn ich es brauche, so dass es nicht zuerst in object umgewandelt wird.) sowie das Hinzufügen zusätzlicher lokaler Variablen.

+0

Vielen Dank, dass die letzte Methode, die Sie mir geschrieben haben, mir geholfen hat – ahmad05

Verwandte Themen