2011-01-17 3 views
6

Когда мое приложение запускается с указанной культурой. Не закрывайте приложение, пользователь меняет системную культуру, например: измените число десятичного разделителя на «.». на ",". Как мое приложение может поймать это событие. Благодарю.Как получить событие, когда пользователь меняет культуру системы

Примечания: C# 2.0, Windows Form.

ответ

10

Вы можете обрабатывать SystemEvents.UserPreferenceChanged события:

void SystemEvents.UserPreferenceChanged(object sender, UserPreferenceChangedEventArgs e) 
{ 
    // Regional settings have changed 
    if (e.Category == UserPreferenceCategory.Locale) 
    { 
     ... 
    } 
} 
+0

Спасибо. Но как получить новые региональные настройки? –

+3

Я решаю свою проблему с кодом: CultureInfo.CurrentCulture.ClearCachedData(); –

+0

@ Lu Lu, я не знал об этом методе ... узнал что-то каждый день;) –

1

Если вы хотите Trach изменений языка системы, то у вас есть SystemEvents объект, который содержит UserPreferenceChanged события, которое вы можете прикрепить к.

Пример:

Microsoft.Win32.SystemEvents.UserPreferenceChanged += new UserPreferenceChangedEventHandler(SystemEvents_UserPreferenceChanged); 

Если вы хотите, чтобы отслеживать изменения языка ввода (например, изменения в системе попробовать, когда вы выбираете между языками), то вы можете использовать: System.Windows.Forms.InputLanguage. CurrentInputLanguage

Пример:

string inputLanguage = System.Windows.Forms.InputLanguage.CurrentInputLanguage.LayoutName; 

 Смежные вопросы

  • Нет связанных вопросов^_^