我的问题是如何在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 :(得分: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
,如果我需要它,我自己传递实际对象,这样它就不会被转换为{ {1}}首先。)以及添加其他局部变量。
答案 1 :(得分:0)
如果您在附加事件处理程序时知道a
,则可以执行以下操作:
int a = 0;
dispatcherTimer.Tick += (sender, e) =>
{
/* a is available here */
};