ストップウォッチ型のアプリを作成しています。時間を表示するためにラベルを使用しました。アプリケーションが起動すると、ラベルは「00:00:00」に初期化され、その時間を 1 秒ごとにインクリメントしたいと考えています。
タイマーを使用してこの仕事を達成しようとしています。
タイマーでシステム時間を取得するため、タイマーは200ミリ秒のような非常に短い間隔である必要があります。時間を計算するには、currentTime - startTIme を秒単位で計算します。
私があなたを正しく理解していれば、きっとうまくいくかもしれません。初期ラベルテキストを「00:00:00」に設定します。タイマー間隔を 1000 に設定します。
private void btnStartWatch_Click(object sender, EventArgs e)
{
timer1.Enabled = true;
}
private void btnPauseWatch_Click(object sender, EventArgs e)
{
timer1.Enabled = false;
}
int i = 1;
DateTime dt = new DateTime();
private void timer1_Tick(object sender, EventArgs e)
{
label1.Text = dt.AddSeconds(i).ToString("HH:mm:ss");
i++;
}
それが役に立てば幸い。
アプリの1つにタイマーがあります。
private int _seconds;
public string TimeDisplay
{
get
{
TimeSpan ts = new TimeSpan( 0, 0, _seconds );
return string.Format("{0,2:00}:{1,2:00}:{2,2:00}", ts.Minutes, ts.Minutes, ts.Seconds);
}
}
あなたがしなければならないのは、あなたがそれにバインドしているなら、あなたのtimer_tickに_secondsとNotifyPropertyChanged()をインクリメントさせることです。いずれにせよ、TimeDisplayはあなたの結果をもたらします。
TimeSpan
構造が必要です。
何かのようなもの:
TimeSpan current = new TimeSpan(0);
// In your update loop:
current += TimeSpan.FromSeconds(1);
理解してほしい。
private void Button1_Click(System.Object sender, System.EventArgs e)
{
Timer1.Interval = 1000;
Timer1.Start();
}
private void Timer1_Tick(System.Object sender, System.EventArgs e)
{
this.Label1.Text = DateTime.Now.ToString("hh/mm/ss");
}
よろしく