Visual C# windows 形式的数字时钟未自动更新

Digital Clock in visual C# windows form not updating automatically

我是 Visual C# windows 窗体的新手。我正在制作数字时钟,这样当我按下一个按钮时,时间就会开始并不断更新,即秒应该继续,当我按下停止按钮时,它应该停止。但是在我当前的代码中,时间正在显示,但它的秒数没有更新。谁能帮我。谢谢

代码

namespace DTDemo
{
 public partial class Form1 : Form
{
    private DateTime datetime;
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e) // start button
    {
        datetime = DateTime.Now;
        String time = datetime.Hour + ":" + datetime.Minute + ":" + datetime.Second;
        label1.Text = time; 
    }

    private void button2_Click(object sender, EventArgs e) //stop button
    {
        label1.Text = " ";
    }
}
}

我试过将它放入 while(true) 但随后它冻结了,什么也没有发生。请帮忙谢谢!

当然不是,你需要一个计时器来不断更新标签。 请尝试以下操作:

namespace DTDemo
{
   public partial class Form1 : Form
   {
      private DateTime datetime;
      System.Timers.Timer timer = new System.Timers.Timer(1000);

      public Form1()
      {
          InitializeComponent();
          timer.Elapsed += timer_Elapsed;
      }

      void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
      {
        MethodInvoker method = new MethodInvoker(delegate{
        datetime = DateTime.Now;
        String time = datetime.Hour + ":" + datetime.Minute + ":" + datetime.Second;
        label1.Text = time; 
        });
        if (label1.InvokeRequired)
            label1.Invoke(method);
        else
            method();
    }

      private void button1_Click(object sender, EventArgs e) // start button
      {
          timer.Start();
      }

      private void button2_Click(object sender, EventArgs e) //stop button
      {
          timer.Stop();
          label1.Text = " ";
      }
    }
  }

顺便说一句,我使用的是 'System.Timers.Timer' 而不是 'System.Windows.Forms.Timer',因为如果 UI 冻结,WinForms 计时器将冻结(因为它运行在主 UI 线)。另一方面,System.Timers.Timer 在工作线程上运行,并且只将 UI 请求发布到主上下文