0

私はこのコードを持っています:

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 ミリ秒に設定されています。マウス ホイール イベントでは、label2 に untis を秒単位で表示するようにしました。実際、マウスホイールを上に動かすと、タイマーが遅くなり、秒単位で表示されます 1 2 3 4 5

問題は、1 秒または 1000 ミリ秒になると、ホイールを押したままにしておくと、単位が 100 単位で表示され、timer1.interval が 100 単位で変更されることを望んでいた 2 番目の部分にあります。

したがって、label2 で 1 秒の場合は、100 まで 900 800 700 600 500 が表示されます。また、timer1 の間隔は、100 まで 800 700 600 900 ミリ秒に変更する必要があります。

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 の下には表示されません。

4

1 に答える 1

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();

Interval1000 を超える場合にを減らすには、追加のチェックが必要です。例えば

if (timer1.Interval > 1000) {
    timer.Interval -= 1000;
} else if ( timer.Interval <= 1000 && timer.Interval > 100 )
    timer.Interval -= 100;
}
于 2013-10-24T21:17:14.117 に答える