我正在开发一个C#应用程序,它试图尊重运行它的系统的时间格式。如果Windows控制面板更改为24小时格式,那就是应用程序显示时间的格式。无论如何,它成功执行此操作,但只有在应用程序运行之前更改时间格式时它才会起作用。如果在应用程序运行时更改Windows时间格式,则不会使用更新的格式。
是否有任何类型的Windows事件或其他方式来检索最新的时间格式?我们目前使用DateTimeFormatInfo LongTimePattern,因为它会根据我们是在12小时还是24小时内而改变。
答案 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 */
}
}