Уважение изменений на лету в формате времени на лету - PullRequest
2 голосов
/ 30 января 2009

Я работаю над приложением C #, которое пытается учитывать формат времени системы, в которой оно работает. Если панель управления Windows изменена на 24-часовой формат, это формат, в котором приложение будет отображать время. В любом случае, оно делает это успешно, за исключением того, что оно будет работать, только если формат времени будет изменен до запуска приложения. Если вы измените формат времени Windows во время работы приложения, оно не будет использовать обновленный формат.

Существует ли какое-либо событие Windows или другой способ получения последнего формата времени? В настоящее время мы используем DateTimeFormatInfo LongTimePattern, потому что он изменяется в зависимости от того, находимся ли мы через 12 или 24 часа.

1 Ответ

8 голосов
/ 30 января 2009

В пространстве имен 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 */
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...