2011-01-17 25 views
6

Khi ứng dụng của tôi chạy với một nền văn hóa được chỉ định. Không đóng ứng dụng, người dùng thay đổi văn hóa của hệ thống, ví dụ: thay đổi số phân cách thập phân từ "." đến ",". Làm thế nào để ứng dụng của tôi có thể bắt sự kiện này. Cảm ơn.Cách nhận sự kiện khi người dùng thay đổi văn hóa của hệ thống

Ghi chú: C# 2.0, Biểu mẫu Windows.

Trả lời

10

Bạn có thể xử lý các sự kiện SystemEvents.UserPreferenceChanged:

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

Cảm ơn. Nhưng làm thế nào để có được các thiết lập khu vực mới? –

+3

Tôi giải quyết vấn đề của tôi với mã: CultureInfo.CurrentCulture.ClearCachedData(); –

+0

@Lu Lu, tôi không biết về phương pháp đó ... tìm hiểu điều gì đó mỗi ngày;) –

1

Nếu bạn muốn Trạch thay đổi ngôn ngữ hệ thống sau đó bạn có SystemEvents đối tượng, trong đó có UserPreferenceChanged sự kiện bạn có thể gắn vào.

mẫu:

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

Nếu bạn muốn theo dõi những thay đổi ngôn ngữ đầu vào (như thay đổi trong hệ thống thử khi bạn lựa chọn giữa các ngôn ngữ), sau đó bạn có thể sử dụng: System.Windows.Forms.InputLanguage. CurrentInputLanguage

mẫu:

string inputLanguage = System.Windows.Forms.InputLanguage.CurrentInputLanguage.LayoutName; 
Các vấn đề liên quan