Sha*_*had 2 c# wpf dispatchertimer
如何在Dispatchertimer Eventhandler中添加额外的字符串参数?
我想实现这样的事情:
string ObjectName = "SomeObjectName";
System.Windows.Threading.DispatcherTimer dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick(ObjectName));
Run Code Online (Sandbox Code Playgroud)
功能:
private void dispatcherTimer_Tick(object sender, EventArgs e, string ObjectName)
{
[...]
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
编辑:
我的目的是为移动物体添加一些动画.我的画布上有很少的物体.我可以通过鼠标点击在画布上移动这些对象,我想为这个动作添加动画.
您可以使用闭包:
...
{
string objectName = "SomeObjectName";
var dispatcherTimer = new DispatcherTimer();
dispatcherTimer.Tick += (sender, e) => { myTick(sender, e, objectName); };
}
private void myTick(object sender, EventArgs e, string objectName)
{
[...]
}
Run Code Online (Sandbox Code Playgroud)
但请注意,捕获变量 objectName,而不是它的当前值.这意味着如果你这样做:
...
{
string objectName = "SomeObjectName";
var dispatcherTimer = new DispatcherTimer();
dispatcherTimer.Tick += (sender, e) => { myTick(sender, e, objectName); };
objectName = "SomeOtherObjectName";
}
Run Code Online (Sandbox Code Playgroud)
myTick将被调用SomeOtherObjectName,乍一看可能是违反直觉的.这样做的原因是,在引擎盖下,objectName创建了一个带有字段的单独对象实例- 非常类似于Chris的解决方案明确做的事情.