2012-11-06 151 views
7

我的問題是如何我Dispatchertimer.Tick事件 這裏給一些參數是代碼:我想在dispatcheTimer_Tick發送額外的參數

dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick); 

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

    } 

的就是收到一個整數值我想要做的就是這樣的事情

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

    } 

如何從呼叫點發送值?

回答

0

如果你知道a你要附加事件處理程序的時候,你可以做這樣的事情:

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

雖然有多種方式,我覺得最方便使用匿名方法

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

如果你有行了一把,你也可以做更多的東西一樣:

int number = 5; 
dispatcherTimer.Tick += (s, args) => 
{ 
    string value = someMethod(); 
    string otherValue = DateTime.Now.Second.ToString() 
    myControl.Text = value + otherValue + number; 
} 
這樣做時可以關上變數

如果您已經不僅僅是一個行的一把更多,那麼你可能還需要另一種方法,但你可以使用lambda調用該方法:

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

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

這是方便了事件處理程序的兩個忽略的參數當你不需要它們的時候委託(我幾乎從不使用sender,如果我需要它,我會自己傳遞實際的對象,這樣它就不會被首先轉換爲object),並添加額外的局部變量。

+0

謝謝你寫的最後一個方法幫助了我 – ahmad05

相關問題