【问题标题】:How to continually update a label with the current time?如何使用当前时间不断更新标签?
【发布时间】:2016-08-22 03:37:27
【问题描述】:

我使用了下面这行代码

int pp = DateTime.Now.Hour; 

没关系。我写了

label1.text=pp.tostring();

进行验证并且它有效,但是如果我在 label1 中的19:59(例如)打开我的表单出现19 并且一分钟后,当时钟为08:00 时,label1 中的值不会改变并且仍然出现19,而不是20

之后,如果我关闭表单并重新打开它,label1 中的数字是20

如何在表单运行时实时修改 datetime.now.hour 的值? 谢谢你

【问题讨论】:

  • 带有滴答事件的计时器?
  • 你需要一个计时器。检查计时器控件。
  • 使用计时器并在其Tick 处理程序中更新您的 UI(前提是这是一个 WinForms 问题)。或者在 WPF 或您正在使用的任何 UI 库中执行等效操作。
  • 您只需根据当前时间设置一次值。如果您希望实时更新值,则需要使用 Timer 或其他工具更新值。
  • 我会编辑这个问题以明确您在询问如何自动刷新标签;您的问题与 DateTime 无关。

标签: c# datetime clock hour


【解决方案1】:

由于您使用的是“表单”术语,我假设是 Windows 窗体,最简单的方法是添加一个 Timer 组件,设置一个合理的 Interval(合理的意思 当标签更改之前的一小时更改时,您可以承受的最大延迟...间隔越高,您的进程将占用的 CPU 越少),在其 Tick 事件上,请执行以下操作: p>

static void MyTimer_Tick(object sender, EventArgs e)
{
  int pp = DateTime.Now.Hour;
  label1.text=pp.tostring();
}

【讨论】:

    【解决方案2】:

    您需要实现Timer,并使其Elapsed 事件更新label1.text。仅仅调用DateTime.Now.Hour 是不够的,因为它只会更新一次。它没有设置循环方法来不断更新。

    using System.Timers;
    
    namespace Example {
        static Timer _timer;
    
        static void Main() {
            _timer = new Timer(1000); // Update every 1 second.
            _timer.Elapsed += UpdateMyLabel;
            _timer.Start();
        }
    
        static void UpdateMyLabel(object sender, ElapsedEventArgs e) {
            label1.Text = DateTime.Now.Hour;
        }
    }
    

    【讨论】:

      【解决方案3】:

      我会推断出标签类并使用计时器滴答来更新标签。就像在 OOP 中一样 ;)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-09
        • 1970-01-01
        • 1970-01-01
        • 2021-07-26
        相关资源
        最近更新 更多