【问题标题】:Handling system time change in windows application处理 Windows 应用程序中的系统时间更改
【发布时间】:2013-08-14 11:40:53
【问题描述】:

我有一个 Windows 应用程序,当用户更改打开或运行该 Windows 应用程序的系统时间时,我想要任何事件。

如何获取更改的时间或特定时间或任何系统更改时间/日期的事件?

【问题讨论】:

标签: c# winforms timer windows-applications


【解决方案1】:

您可以订阅SystemEvents.TimeChanged事件。

要订阅上述事件,请执行以下操作:

1.创建TimeChanged EventHander。

    private void time_Changed(object sender, EventArgs e)
    {
       MessageBox.Show("Time Changed");  
    }

2.将上述事件处理程序添加到SystemEvents.TimeChanged事件。

 SystemEvents.TimeChanged += time_Changed;

【讨论】:

  • 我该如何使用该方法?我在这里有点困惑,因为我是 Windows 应用程序的新手。
  • 可以,但请确保有消息泵正在运行。除非您创建消息泵,否则这在控制台应用程序中不起作用。有关示例,请参见 stackoverflow.com/a/764904/56778
  • 我写了我的代码,但消息框没有在系统时间更改时触发...见下面的代码。公共部分类Form1:Form {公共静态事件EventHandler TimeChanged;公共 Form1() { InitializeComponent(); TimeChanged += Form1_TimeChanged; } protected void Form1_TimeChanged(object sender, EventArgs e) { MessageBox.Show(DateTime.Now.ToString()); } }
  • 非常感谢您的意见。
【解决方案2】:

...or any event of system change of time/date?SystemEvents.TimeChanged 只会触发“当用户更改系统时钟上的时间时”。

系统时间更改也可能由于系统时间调整而发生,由系统或用户发起。您可以使用 GetSystemTimeAdjustment function 捕获此类系统时间调整。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-25
    • 2010-11-08
    • 2016-03-18
    • 2011-07-30
    • 2011-12-06
    • 2023-03-31
    • 1970-01-01
    • 2014-09-21
    相关资源
    最近更新 更多