我想在标签中显示特定时间的文本,这是我到目前为止尝试的代码:
private void ShowTextForParticularTime(String caption)
{
Timer t = new Timer { Interval = 2000, Enabled = true };
t.Tick += new EventHandler(OnTimerEvent(caption));
}
private void OnTimerEvent(object sender, EventArgs e,String caption)
{
barStaticItem3.Caption = caption;
}
我的问题是如何将“caption”参数设置为OnTimerEvent方法,因为我编写的代码不起作用它给了我这个错误:
方法'OnTimerEvent'没有重载需要'1'参数
答案 0 :(得分:1)
请改用:
t.Tick += (sender, args) => OnTimerEvent(sender, args, caption);
原因是你需要为事件分配一些事件处理程序。但是当你陈述new EventHandler(OnTimerEvent(caption));
时,你实际上是在尝试调用它。编译时的调用调用当然会失败,因为该方法需要3个参数(sender,e,caption)。
如果你通过lamdas创建一个匿名委托,你可以利用它们的语法和闭包来传递事件,同时传递你的第三个caption
参数。