-1

私は2つのボタンを持っています。スタートとストップ。

スタートを押したら、ストップを押すまでの時間を数えて、メッセージボックスに何秒と何分か送信する必要があります。

私はこのように始めます

private void button6_Click(object sender, EventArgs e)
{
    //start
    DateTime now = DateTime.Now;
}

private void button5_Click(object sender, EventArgs e)
{
    //end
    DateTime end = DateTime.Now;

    MessageBox.Show(end-now);
}
4

4 に答える 4

3

これを使って

DateTime start;
private void button6_Click(object sender, EventArgs e)
{
    //start
    start = DateTime.Now;
}

private void button5_Click(object sender, EventArgs e)
{
    //end            
    TimeSpan ts = DateTime.Now - start;
    MessageBox.Show(String.Format("{0} minutes and {1} seconds", 
                    Math.Floor(ts.TotalMinutes), ts.Seconds));
}

これにより、このような結果が得られます。

ここに画像の説明を入力

于 2013-10-26T07:10:19.747 に答える
1

ストップウォッチ クラスを使用します。

msdn の例:

Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
Thread.Sleep(10000);
stopWatch.Stop();
// Get the elapsed time as a TimeSpan value.
TimeSpan ts = stopWatch.Elapsed;

// Format and display the TimeSpan value. 
string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
    ts.Hours, ts.Minutes, ts.Seconds,
    ts.Milliseconds / 10);
于 2013-10-26T07:10:51.357 に答える
1

System.Diagnostics.Stopwatchを使用してください。これが最も正確です。

次に例を示します。

static Stopwatch sw = new Stopwatch();


private void Start_Click(object sender, EventArgs e)
{
    sw.Start();
}

private void stopButton_Click(object sender, EventArgs e)
{
    sw.Stop();

    TimeSpan ts = sw.Elapsed;

    string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", 
        ts.Hours, ts.Minutes, ts.Seconds,
        ts.Milliseconds / 10);

    MessageBox.Show("Elapsed time = " + elapsedTime);
}

それは完全に機能し、テストされていますが、残念ながら私は画像を投稿するのに十分な評判がありません.

于 2013-10-26T07:23:05.803 に答える
1

他の回答と同様に、Stopwatchクラスを使用します。両方のボタンが同じストップウォッチにアクセスできることを確認してください。

public class ThisClass{
  Stopwatch sw = new Stopwatch();

  private void button6_Click(object sender, EventArgs e){
    sw.start();//or sw.Restart()
  }

  private void button5_Click(object sender, EventArgs e){
    //stop
    sw.Stop();
    int numSeconds=sw.ElapsedSeconds;//or other members of sw
  }

}//end class

Stopwatchオブジェクトがボタン プレス関数と同じ名前空間/スコープにあることが重要です。これにより、両方が同じStopwatchオブジェクトを操作できるようになります。

于 2013-10-26T07:29:08.863 に答える