当用户点击Punch In然后Punch Out时,我试图创建一个简单的时间计算器。我使用DateTime.Now为每个人创建了变量,以捕获用户打入和跳出的实际时间。我还创建了一个用于打卡的按钮,以及一个用于打卡的单独按钮。出于某种原因,当我点击Punch In,然后等待一两分钟进行测试时,当我点击Punch Out时,Punch Out会显示与Punch In相同的时间。我究竟做错了什么? 以下是代码:
public partial class Form1 : Form
{
DateTime startTime = DateTime.Now;
DateTime stopTime = DateTime.Now;
public Form1()
{
InitializeComponent();
}
private void btnPunchIn_Click(object sender, EventArgs e)
{
string punchIn = startTime.ToShortTimeString();
lblPunchInTime.Text = punchIn.ToString();
}
private void btnPunchOut_Click(object sender, EventArgs e)
{
string punchOut = stopTime.ToShortTimeString();
TimeSpan timeWorked = new TimeSpan();
lblPunchOutTime.Text = punchOut.ToString();
timeWorked = stopTime - startTime;
lblTimeWorked.Text = timeWorked.ToString();
}
}
答案 0 :(得分:1)
您设置stopTime
的唯一时间是创建表单时(位于Form类的顶部)。所以它总是等于那个时间。
我认为您的意思是在点击按钮时设置stopTime = DateTime.Now
。类似的交易startTime
。
答案 1 :(得分:1)
在构建startTime
实例时,您只需为stopTime
和Form1
分配一次值。并且它们都被分配(几乎)相同的时间值,这是当前的当地时间。
答案 2 :(得分:1)
初始化类时,您将开始和结束时间设置为DateTime.Now。如果你在事件处理程序中设置它们,你应该全部设置。