我是 C# 新手,我正在尝试制作一个自定义计时器,它由两个标签(label1 和 label2)组成,显示时间字符串(时间和 time0/time1)和一个更改其文本的按钮(暂停/播放)每次点击时从暂停到播放,反之亦然。Label1 显示时间,它是由 datetime.now (hhmmss) 创建的字符串 var,label2 显示 time0,然后单击“暂停”按钮并再次单击“播放”按钮,它将显示 time1(时间 1 由以下公式计算)。
它执行以下操作:
- 获取系统 datetime.now (hhmmss),将其保存在时间字符串中并在 label1 中显示
- 按下按钮暂停,将时间值保存在另一个字符串time0 中并显示它在 label2 中停止
- 按下按钮播放,开始 label2 的时间(time1)与 label1 的时间不同步
要计算time1我想使用这个公式:
time1 = DateTime.Now - ((DateTime.Now 和time0之间的差异) - 1 秒)
我被困在第三点,因为我不知道如何计算两个字符串之间的时间差并将新时间time1用作 label2 和下一次点击的文本。
这是我的实际代码,任何帮助完成它都非常感谢,谢谢。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
//time0
public int hh = 0;
public int mm = 0;
public int ss = 0;
//time
public string time = "";
public string time0 = "";
public bool IsPause = true;
public Timer t = new Timer();
public Form1()
{
InitializeComponent();
}
private void label1_Click(object sender, EventArgs e)
{
}
private void Form1_Load(object sender, EventArgs e)
{
//timer interval
t.Interval = 1000; //in millisecondi
t.Tick += new EventHandler(this.t_Tick);
//start timer form loads
t.Start(); //questo userà il metodo t_Tick()
}
//timer eventhandler
private void t_Tick(object sender, EventArgs e)
{
//get current time
hh = DateTime.Now.Hour;
mm = DateTime.Now.Minute;
ss = DateTime.Now.Second;
//padding leading zero
if(hh < 10)
{
time += "0" + hh;
}
else
{
time += hh;
}
time += ":";
if(mm < 10)
{
time += "0" + mm;
}
else
{
time += mm;
}
time += ":";
if (ss < 10)
{
time += "0" + ss;
}
else
{
time += ss;
}
//update labels
label1.Text = time;
if (IsPause == false) label2.Text = time0;
else label2.Text = time;
}
private void button1_Click(object sender, EventArgs e)
{
if (button1.Text == "pause")
{
IsPause = false;
button1.Text = "play";
time0 = label1.Text;
}
else
{
IsPause = true;
button1.Text = "pause";
}
}
}
}