在发送事件Dispatchertimer.Tick一个额外的参数(send a extra argu

2019-08-02 09:17发布

我的问题是如何发送这里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();

    }

如何发送从呼叫点的值?

Answer 1:

虽然有多种方式,我觉得最方便使用匿名方法执行此操作时可以关上的变量:

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第一个。)以及添加在另外的局部变量。



Answer 2:

如果你知道a你要附加事件处理程序的时候,你可以这样做:

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


文章来源: send a extra argument in Dispatchertimer.Tick event