2012-11-06 5 views
7

sorum i Dispatchertimer.Tick olayı burada bazı argümanları gönderen bir koddur nasıl i ise Dispatchertimer.Tick olay bir ekstra argüman göndermek

dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick); 

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

    } 

dispatcheTimer_Tick

bir tamsayı değeri almak istediğini Ne yapmak istediğim bir şey var mı?

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

    } 

Arama noktasından bir değer nasıl gönderilir ?? Eğer olay işleyicisi ekleme ediyoruz anda a biliyorsanız

cevap

0

, böyle bir şey yapabilirsiniz: birkaç yolu varken

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

, bunu en uygun anonim yöntemleri kullanmak bulmak

int number = 5; 
dispatcherTimer.Tick += (s, args) => 
{ 
    string value = someMethod(); 
    string otherValue = DateTime.Now.Second.ToString() 
    myControl.Text = value + otherValue + number; 
} 
: Eğer çizgilerin bir avuç varsa

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

ayrıca daha böyle bir şey yapabileceğini: bunu yaparken değişkenleri üzerinde kapatmak için

sen hatlarının sadece bir avuç insan varsa o zaman muhtemelen hala başka bir yöntemi istiyorum, ama bu yöntem aramak için bir lambda kullanabilirsiniz:

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

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

Bu olay işleyicisi en iki görmezden parametreleri için uygundur Onlara ihtiyacınız olmadığında (neredeyse hiç sender kullanmıyorum) temsilci seçmeliyim, gerekiyorsa gerçek nesneyi kendimden geçiriyorum, böylece ilk olarak object'a aktarılmasın. Ek yerel değişkenler ekleyerek.

+0

Bana yazdığınız son yöntem bana yardımcı oldu. – ahmad05