如何重启计时器?

时间:2012-02-14 19:12:40

标签: c# winforms timer label

我有从文件中读取并通过标签流式传输的代码。但当我取消选中该复选框并再次检查时,它只是从它停止的地方开始

这是我的代码

    private void checkBox1_CheckedChanged(object sender, EventArgs e)
    {
        if (checkBox1.Checked == true)
        {
            timer1.Enabled = true;
            timer1.Start();
        }
        else
        {
            timer1.Enabled = false;
        }
    }
    private int start = 0;
    private string lyricspath = @"lyrics.txt";
    private void timer1_Tick(object sender, EventArgs e)
    {
        TextReader reader = new StreamReader(lyricspath);
        string[] read = File.ReadAllLines(lyricspath);
        string join = string.Join(" ", read);
        int number = join.Length;
        start++;
        string str = join.Substring(start, 15);
        if (start == number - 15)
        {
            start = 0;
        }
        label1.Text = str;
    }

有没有办法让计时器在每次取消选中时完全启动,然后选中复选框?

3 个答案:

答案 0 :(得分:1)

设置INTERVAL属性...以毫秒为单位... 1000 = 1秒

答案 1 :(得分:1)

Timer.EnabledTimer.Start()功能相同。

我怀疑,你需要重置你的起始变量。

if (checkBox1.Checked == true)
{
  start = 0;
  label1.Text = string.Empty;
  timer1.Start();
}
else
{
  timer1.Stop();
}

编辑以包含每条评论重置标签。

答案 2 :(得分:0)

如果在检查更改事件中将开始重置为零,则应重置计时器:

private void checkBox1_CheckedChanged(object sender, EventArgs e)
    {
        if (checkBox1.Checked == true)
        {
            start = 0;
            label1.Text = string.Empty;
            timer1.Enabled = true;
            timer1.Start();
        }
        else
        {
            timer1.Enabled = false;
        }
    }

我有一个类似的过程,我在表单加载时启动一个计时器,然后如果他们有一个表单打开一段时间我给他们保持表单打开的选项。如果他们这样做,那么我将计时器计数重置为零并重新开始该过程。