私はタイマーをそのように設定しました。しかし、より頻繁に発火する間隔が必要なので、クロックがより早くカウントされるようにする必要があります(シミュレーションでは、ユーザーがタイマーをカウントダウンするのを待つのが適切ではないため)。私がそれを適切に説明したことを願っています。何か質問があるかどうか質問してください。どんな助けも非常に高く評価されるでしょう!timespanを使用してタイマーのインターバルを設定しましたが、より頻繁に発生させたい
System.Windows.Forms.Timer timer;
TimeSpan countdownClock = TimeSpan.Zero;
private void Form1_Load(object sender, EventArgs e)
{
timer = new System.Windows.Forms.Timer(); //Initialise timer
timer.Interval = (int)TimeSpan.FromSeconds(1).TotalMilliseconds;
timer.Tick += OnTimeEvent;
DisplayTime();
}
private void DisplayTime()
{
lblTime.Text = countdownClock.ToString(@"hh\:mm\:ss"); //Define timer
}
private void OnTimeEvent(object sender, EventArgs e)
{
countdownClock = countdownClock.Subtract(TimeSpan.FromMilliseconds(timer.Interval)); //Set up countdown
if (countdownClock.TotalMilliseconds <= 0)
{
countdownClock = TimeSpan.Zero;
timer.Stop();
Button_Open.Enabled = true;
}
DisplayTime();
}
つまり、時間の値をより頻繁に表示したいですか?他の(速い)タイマーを使うのはどうですか?限られた環境では、最初に高速タイマーを使用し、除算器を適用する。タイマーが100ミリ秒に設定されている場合、10イベント(デバイダ= 10)ごとにタイムアウトがチェックされます。あなたのケースでは、分周器は必要ないかもしれません。 Btw、それを計算するのではなく単に時間を保存し、それを 'DateTime.Now - storedDateTime'として計算すると、カウントダウンはタイマー頻度に対してより耐性があります。別のオプションは、 'Stopwatch'(タイマーと一緒に起動し、' Elapsed'を使用して値を表示し、タイマーで停止)を使用することです。 – Sinatr
'timer.Interval = less then 1000' – EpicKip
@EpicKipちょうど' int'値を追加しようとしましたが、目的の効果がありません –