-1

我有两个按钮。开始和停止。

当我按下开始时,我需要计算直到按下停止的时间,并在消息框上发送多少秒和多少分钟。

我是这样开始的

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

与其他答案类似,使用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 回答
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 回答