0

我有内置计时器的

System.Windows.Forms.Timer timerLoop;

当定时器启动时,我希望(如果可能的话)给这个定时器一个整数值。

timerLoop.Start();

到目前为止,我只创建了一个通用变量,定时器可以在启动定时器之前读取和更新这个变量。

4

2 回答 2

6

您可以通过两种方式(也许更多)做到这一点:

Timer通过创建继承它的新基础来扩展基础:

private class TimerExnteded : Timer
{
    public int Value { get; set; }

    public TimerExnteded(int value)
    {
        Value = value;
    }
}

Tick并在事件中使用该值。

使用Tag属性Timer

Timer t = new Timer();
 t.Tag = 5;
 t.Start();

 //event
 private void t_Tick(object sender, EventArgs e)
 {
     var timer = sender as Timer;
     var value = (timer.Tag as int?) ?? 0; 

     value++;

     timer.Tag = value;
 }

第二种方法使用值的装箱/拆箱。

于 2013-05-14T11:13:52.887 回答
1

你也可以使用闭包:

t.Tick += (s, a) => OnTick(YourValue);
于 2013-05-14T11:38:57.160 回答