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