gpt4 book ai didi

c# - 在 C# 中设置秒表程序的开始时间

转载 作者:太空狗 更新时间:2023-10-29 23:56:02 25 4
gpt4 key购买 nike

我想写一个简单的秒表程序,我可以用下面的代码让它工作

    public Form1()
{
InitializeComponent();
}
System.Diagnostics.Stopwatch ss = new System.Diagnostics.Stopwatch { };
private void button1_Click(object sender, EventArgs e)
{
if (button1.Text == "Start")
{
button1.Text = "Stop";

ss.Start();
timer1.Enabled = true;

}
else
{
button1.Text = "Start";

ss.Stop();
timer1.Enabled = false;

}
}

private void timer1_Tick(object sender, EventArgs e)
{


int hrs = ss.Elapsed.Hours, mins = ss.Elapsed.Minutes, secs = ss.Elapsed.Seconds;
label1.Text = hrs + ":";
if (mins < 10)
label1.Text += "0" + mins + ":";
else
label1.Text += mins + ":";
if (secs < 10)
label1.Text += "0" + secs;
else
label1.Text += secs;


}

private void button2_Click(object sender, EventArgs e)
{
ss.Reset();
button1.Text= "Start";
timer1.Enabled = true;

}

现在我想为这个秒表设置一个自定义开始时间,例如我不希望它从 0:00:00 开始计时,而是从 0:45:00 开始计时怎么办,谢谢。

最佳答案

秒表没有任何允许您设置自定义开始时间的方法或属性。

您可以子类化 Stopwatch 并覆盖 ElapsedMilliseconds 和 ElapsedTicks 以调整您的开始时间偏移量。

    public class MyStopwatch : Stopwatch
{
public TimeSpan StartOffset { get; private set; }

public MyStopwatch(TimeSpan startOffset)
{
StartOffset = startOffset;
}

public new long ElapsedMilliseconds
{
get
{
return base.ElapsedMilliseconds + (long)StartOffset.TotalMilliseconds;
}
}

public new long ElapsedTicks
{
get
{
return base.ElapsedTicks + StartOffset.Ticks;
}
}
}

关于c# - 在 C# 中设置秒表程序的开始时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11681457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com