C# 计时器间隔不随轨迹栏进度调整

C# 计时器间隔不随轨迹栏进度调整,c#,timer,intervals,trackbar,C#,Timer,Intervals,Trackbar,我试图允许用户通过使用轨迹栏trackbartimer 当用户向右滑动时,计时器应加速,向左滑动时,计时器应加速,反之亦然;但事实并非如此 以下是我的尝试: private void runClick_Tick(object sender, EventArgs e) { runClick.Interval = trackbartimer.Value; } private void trackbartimer_Scroll(object sender, Ev

我试图允许用户通过使用轨迹栏
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,将最小值设置为1000不会反转控件的逻辑。如果您通过IDE输入这些值,您将看到它修复这些值,而不是使用“反转”范围

此外,计时器的精度不高,在55或60毫秒以下的速度将有很大变化,也不会精确地按您指定的间隔触发。发件人:

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

最简单的方法是在表单上添加一些
标签,但要使表单更快地向右移动,请使用一些简单的数学:

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

    timer1.Interval = v;
}
+100
是为了避免疯狂的快速间隔


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

一定要发布您实际使用的代码,将最小值设置为1000,最大值设置为1毫无意义。