方法'OnTimerEvent'没有重载需要'1'参数

时间:2012-09-26 21:56:43

标签: c#

我想在标签中显示特定时间的文本,这是我到目前为止尝试的代码:

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'参数

1 个答案:

答案 0 :(得分:1)

请改用:

t.Tick += (sender, args) => OnTimerEvent(sender, args, caption);

原因是你需要为事件分配一些事件处理程序。但是当你陈述new EventHandler(OnTimerEvent(caption));时,你实际上是在尝试调用它。编译时的调用调用当然会失败,因为该方法需要3个参数(sender,e,caption)。

如果你通过lamdas创建一个匿名委托,你可以利用它们的语法和闭包来传递事件,同时传递你的第三个caption参数。