C#使用DateTime打卡打卡。现在

C#使用DateTime打卡打卡。现在,c#,time,C#,Time,我曾尝试在用户单击“打卡入”和“打卡出”时创建一个简单的时间计算器。我已经使用DateTime.Now为每个创建了变量,以捕获用户输入和输出的实际时间。我还为打孔创建了一个按钮,为打孔创建了一个单独的按钮。出于某种原因,当我单击“打孔”,然后等待一两分钟进行测试时,当我单击“打孔”时,打孔显示的时间与打孔显示的时间相同。我做错了什么? 代码如下: public partial class Form1 : Form { DateTime startTime = DateT

我曾尝试在用户单击“打卡入”和“打卡出”时创建一个简单的时间计算器。我已经使用DateTime.Now为每个创建了变量,以捕获用户输入和输出的实际时间。我还为打孔创建了一个按钮,为打孔创建了一个单独的按钮。出于某种原因,当我单击“打孔”,然后等待一两分钟进行测试时,当我单击“打孔”时,打孔显示的时间与打孔显示的时间相同。我做错了什么? 代码如下:

 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();
        }
    }

设置
stopTime
的唯一时间是创建表单时(在表单类的顶部)。因此,它将始终等于该时间


我想你的意思是设置
stopTime=DateTime。现在他们点击按钮时。对于
startTime

类似的处理,在构建
Form1
实例时,您只需将值赋给
startTime
stopTime
一次。它们都被分配(几乎)相同的时间值,即当前本地时间。

您正在将开始和结束时间设置为DateTime。现在,当类初始化时。如果您在事件处理程序中设置了它们,则应该已全部设置