我试图允许用户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;
}
谁能告诉我我要去哪里错了?
问题在于,将拇指移至TrackBar上的“右”会增加该值,因此会增加间隔,反之亦然。将“最大值”设置为1,将“最小值”设置为1000不会反转控件的逻辑。如果通过IDE输入这些值,则会看到它固定了这些值,而不是使用“反向”范围。
另外,计时器的准确性也不高,以至于55毫秒或60毫秒以下的速度会有很大变化,也不会以您指定的间隔精确触发。从MSDN:
Windows Forms Timer组件是单线程的,并且精度限制为55毫秒。
最简单的方法是在表单上放置一些<< Faster
和Slower >>
标签,但是要使用一些简单的数学方法使其更快地移到右边:
private void trackBar1_ValueChanged(object sender, EventArgs e)
{
int v = (trackBar1.Maximum - trackBar1.Value) + 100;
timer1.Interval = v;
}
这+100
是为了避免疯狂的快速间隔。
我将使用该ValueChanged
事件来处理更少的事件,并且不需要在Tick事件中再次(又一次)重置计时器间隔。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句