如何获得两次按钮点击之间的秒数

时间:2013-10-26 07:07:09

标签: c#

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

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

我是这样开始的

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 个答案:

答案 0 :(得分: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));
}

这给出了这样的结果。

enter image description here

答案 1 :(得分:1)

使用stopwatch class.

来自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);

答案 2 :(得分: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);
}

它完全正常运行并经过测试,但遗憾的是我没有足够的声誉来发布图片。

答案 3 :(得分: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对象。