我有两个按钮。开始和停止。
当我按下开始时,我需要计算时间,直到我按下停止并在消息框上发送多少秒和分钟。
我是这样开始的
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);
}
答案 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));
}
这给出了这样的结果。
答案 1 :(得分: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);
答案 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
对象。