【问题标题】:How do i change the timer interval according to numericupdown value in real time?如何根据 numericupdown 值实时更改计时器间隔?
【发布时间】:2023-04-02 10:51:02
【问题描述】:

我在里面有 Timer3 滴答事件,我将 timer3 间隔设置为 numericupdown 值:

private void timer3_Tick(object sender, EventArgs e)
        {
            try
            {
                Image iOLd = this.pictureBox1.Image;
                Image img = Image.FromFile(_files[_indx].FullName);
                trackBar1.Value = _indx;
                label23.Text = _files[_indx].Name;
                this.pictureBox1.Image = img;

                if (iOLd != null)
                    iOLd.Dispose();
                _indx++;

                if (_indx >= _files.Count)
                {
                    _indx = 0;
                    trackBar1.Value = 0;
                }
                timer3.Interval = Convert.ToInt32(numericUpDown1.Value); 
            }
            catch
            {

            }
        }

我也在 numericupdown valuechanged 事件中做到了:

private void numericUpDown1_ValueChanged(object sender, EventArgs e)
        {
            timer3.Interval = Convert.ToInt32(numericUpDown1.Value);
        }

问题是,例如,我在程序运行时将 numericupdown 值设置为 10000,并且它的移动速度非常慢,然后我立即将值设置为 1,因此当我将其更改为 1 时,timer3 间隔将生效,它正在等待对于 10000 值的另一个周期,则 timer3 间隔充当值 1。

我想要做的是,当我将 numericupdown 从 10000 更改为 1 时,它会立即更改,而不是等待另一轮 10000 值。

【问题讨论】:

    标签: c#


    【解决方案1】:

    假设您使用的是 Windows.Forms.Timer,那么您需要在更改间隔之前停止 Timer,然后重新启动它。

    timer3.Stop();
    timer3.Interval = Convert.ToInt32(numericUpDown1.Value); 
    timer3.Start();
    

    来自 MSDN

    在您通过调用 Stop 禁用 Timer 后调用 Start 将导致 Timer 重新启动中断的间隔。如果您的 Timer 设置为 5000 毫秒间隔,并且您在大约 3000 毫秒时调用 Stop,则调用 Start 将导致 Timer 在引发 Tick 事件之前等待 5000 毫秒。

    【讨论】:

      【解决方案2】:

      您必须停止计时器,设置时间间隔,然后重新启动它。

      timer3.Enabled = false;
      timer3.Interval = ...;
      timer3.Enabled = true;
      

      .NET 框架中有多个计时器实现,因此如果您使用的计时器与我在此处使用的不同计时器 (System.Timers.Timer),您必须调用 Stop() 和 Start() 方法,而不是设置 Enabled。

      【讨论】:

        【解决方案3】:

        停止计时器,设置时间间隔,然后重新启动计时器。 我希望它会工作

        【讨论】:

        • 我这样做了,但我不明白为什么会这样?如果我不这样做会发生什么?!
        • 有时人们只想要代码,不想理解。但它的生活
        猜你喜欢
        • 2017-03-25
        • 2019-07-05
        • 1970-01-01
        • 1970-01-01
        • 2019-03-02
        • 1970-01-01
        • 1970-01-01
        • 2019-12-28
        • 1970-01-01
        相关资源
        最近更新 更多