1

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

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;
        }

我的问题是如何将“标题”参数设置为 OnTimerEvent 方法,因为我编写的代码不起作用它给了我这个错误:

方法“OnTimerEvent”没有重载需要“1”个参数

4

1 回答 1

1

改用这个:

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

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

相反,如果您通过 lamdas 创建匿名委托,则可以利用它们的语法和闭包来连接事件,同时传入第三个caption参数。

于 2012-09-26T21:58:15.890 回答