定时器间隔未通过Trackbar进度调整

时间:2015-03-21 22:21:43

标签: c# timer intervals trackbar

我正在尝试允许用户使用轨道栏runClick

来控制计时器trackbartimer的间隔

当用户向右滑动时,计时器应该加速,当离开时,反之亦然;但事实并非如此。

以下是我的尝试:

private void runClick_Tick(object sender, EventArgs e)
    {
      runClick.Interval = trackbartimer.Value;
    }


    private void trackbartimer_Scroll(object sender, EventArgs e)
    {
        trackbartimer.Minimum = 1000;
        trackbartimer.Maximum = 1;
        trackbartimer.TickFrequency = 10;
        trackbartimer.LargeChange = 100;
        trackbartimer.SmallChange = 10;

        runClick.Interval = trackbartimer.Value;

    }

有人能告诉我哪里出错了吗?

1 个答案:

答案 0 :(得分:2)

问题是将拇指移动到TrackBar上的右侧会增加值,从而增加间隔,反之亦然。将Max设置为1并将Min设置为1000不会反转控件的逻辑。如果您通过IDE输入这些值,您会看到它修复了这些值,而不是使用“反转”值。范围。

此外,计时器不是那么精确,以至于速度会在55或60毫秒以下发生很大变化,也不会在您指定的时间间隔内精确点火。来自MSDN

  

Windows窗体计时器组件是单线程的,精度限制为55毫秒。

最简单的方法是在表单上放置一些<< FasterSlower >>标签,但要使其更快地向右移动,请使用一些简单的数学运算:

private void trackBar1_ValueChanged(object sender, EventArgs e)
{
    int v = (trackBar1.Maximum - trackBar1.Value) + 100;

    timer1.Interval = v;
}

+100是为了避免疯狂的快速间隔。

我会使用ValueChanged事件来处理更少的事件,并且不需要在Tick事件中再次(并且再次)重置计时器间隔。