2009-01-29 29 views
2

我正在嘗試尊重正在運行的系統的時間格式的C#應用​​程序。如果Windows控制面板更改爲24小時格式,那麼應用程序將顯示時間格式。無論如何,它會成功執行此操作,但只有在應用程序運行之前更改時間格式時纔有效。如果您在應用程序運行時更改Windows時間格式,則它將不會使用更新後的格式。尊重對Windows時間格式的即時更改

是否有任何Windows事件或其他方式來檢索最新的時間格式?我們目前使用DateTimeFormatInfo LongTimePattern,因爲它根據我們是在12小時還是24小時的時間而變化。

回答

8

Microsoft.Win32命名空間中有一個類SystemEvents,它具有一組您可以訂閱的靜態事件。您需要訂閱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 */ 
    } 
}