我有这段代码:
private void Form1_MouseWheel(object sender, MouseEventArgs e)
{
if (leave == true)
{
if (e.Delta > 0)
{
if (timer1.Interval < 5000)
{
timer1.Interval += 1000;
label2.Text = (timer1.Interval/1000).ToString();
}
}
else
{
if (timer1.Interval == 1000)
{
timer1.Interval -= 100;
label2.Text = (timer1.Interval / 1000).ToString();
}
}
}
}
设计器中的原始timer1间隔设置为1000毫秒。 在鼠标滚轮事件中,我做了它,它将在标签2中显示以秒为单位的untis。 事实上,当我向上移动鼠标滚轮时,它会使计时器减速并在几秒钟内显示它1 2 3 4 5
问题在于第二部分我希望当它达到1秒或1000毫秒时如果我继续将其向下旋转它将以100为单位显示单位并以100个单位更改timer1.interval。
所以在label2中,如果是1秒,那么现在我将看到900 800 700 600 500 un到100。 而且timer1间隔应该更改为900毫秒800 700 600直到100。
当它到达100时就停在那里,不要再低于100。
问题出在这一部分:
if (timer1.Interval == 1000)
{
timer1.Interval -= 100;
label2.Text = (timer1.Interval / 1000).ToString();
}
它根本不起作用。
编辑**
我的代码现在:
if (leave == true)
{
if (e.Delta > 0)
{
if (timer1.Interval < 5000)
{
timer1.Interval += 1000;
label2.Text = (timer1.Interval / 1000).ToString();
}
}
else
{
if (timer1.Interval > 1000) {
timer1.Interval -= 1000;
label2.Text = (timer1.Interval / 1000).ToString();
}
else
if (timer1.Interval <= 1000 && timer1.Interval > 100)
{
timer1.Interval -= 100;
label2.Text = (timer1.Interval / (double)1000).ToString();
}
}
}
但现在,如果我在5秒(5000毫秒),我现在将车轮向下移动计数5 4 3 2 1 0并停在0
它的剂量显示在1 ... 0.9 0.8 0.7以前。
答案 0 :(得分:1)
您应该将支票更改为:
if (timer1.Interval <= 1000 )
定时器间隔仅为1000
一次,然后从中减去100并使其为900.通过检查值<= 1000
,它将继续用于较低的值。
您可能还想检查间隔是否过低,并将检查扩展为
if (timer1.Interval <= 1000 && timer1.Interval > 100)
要显示小于1秒的时间,您需要确保除法是浮点类型,否则它只显示0.除以整数会导致任何分数被截断
label2.Text = (timer1.Interval / (double)1000).ToString();
要在Interval
高于1000时减少它,您需要额外检查。 E.g。
if (timer1.Interval > 1000) {
timer.Interval -= 1000;
} else if ( timer.Interval <= 1000 && timer.Interval > 100 )
timer.Interval -= 100;
}