2012-11-06 55 views
7

私の質問は、私はDispatchertimer.Tickイベントここ にいくつかの引数を送信することができますが、コードがどのようにある:iは Dispatchertimer.Tickイベントで余分な引数を送信

dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick); 

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

    } 

dispatcheTimer_Tick

で整数値を受け取るために何を望みますか私がやりたかったのは、このようなものです。

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

いくつかの方法がありますが、私は匿名メソッドを使用することが最も便利見つけますこれを行う際に、変数を超える閉じるために:

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(); 

をあなたはまた、より多くのような何かを行うことができます

あなたがラインのちょうど一握り以上のものを持っているなら、あなたはおそらくまだ別の方法をしたいが、あなたはそのメソッドを呼び出すためにラムダを使用することができます。

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

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

これは、イベントハンドラの両方の無視のパラメータ便利ですあなたがそれらを必要としないときにデリゲートしてください(私はsenderをほとんど使用しません。最初にobjectにキャストされないように、実際のオブジェクトを自分で渡します)。

+0

最後にお書き添えいただきありがとうございました – ahmad05

関連する問題