尊重Windows时间格式的即时更改

时间:2009-01-29 23:04:26

标签: c# .net datetime formatting

我正在开发一个C#应用程序,它试图尊重运行它的系统的时间格式。如果Windows控制面板更改为24小时格式,那就是应用程序显示时间的格式。无论如何,它成功执行此操作,但只有在应用程序运行之前更改时间格式时它才会起作用。如果在应用程序运行时更改Windows时间格式,则不会使用更新的格式。

是否有任何类型的Windows事件或其他方式来检索最新的时间格式?我们目前使用DateTimeFormatInfo LongTimePattern,因为它会根据我们是在12小时还是24小时内而改变。

1 个答案:

答案 0 :(得分:8)

SystemEvents命名空间中有一个类Microsoft.Win32,它有一组您可以订阅的静态事件。您将要订阅UserPreferenceChanged事件:

SystemEvents.UserPreferenceChanged += new UserPreferenceChanged;

/* Other stuff... */

private static void UserPreferenceChanged(object s, UserPreferenceChangedEventArgs e)
{
    if (e.Category == UserPreferenceCategory.Locale)
    {
        /* They changed regional settings, so do your work here */
    }
}