C# 用户更改系统时如何接收事件&x27;文化

C# 用户更改系统时如何接收事件&x27;文化,c#,.net,cultureinfo,C#,.net,Cultureinfo,当我的应用程序使用指定的区域性运行时。不关闭应用程序,用户更改系统区域性,例如:将数字小数分隔符从“.”更改为“,”。如何让我的应用程序捕获此事件。谢谢 注意:C#2.0,Windows窗体。您可以处理SystemEvents。用户首选项已更改事件: void SystemEvents.UserPreferenceChanged(object sender, UserPreferenceChangedEventArgs e) { // Regional settings have cha

当我的应用程序使用指定的区域性运行时。不关闭应用程序,用户更改系统区域性,例如:将数字小数分隔符从“.”更改为“,”。如何让我的应用程序捕获此事件。谢谢


注意:C#2.0,Windows窗体。

您可以处理
SystemEvents。用户首选项已更改
事件:

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

如果要跟踪系统语言更改,则需要SystemEvents对象,该对象包含可附加到的事件

样本:

Microsoft.Win32.SystemEvents.UserPreferenceChanged += new UserPreferenceChangedEventHandler(SystemEvents_UserPreferenceChanged);
string inputLanguage = System.Windows.Forms.InputLanguage.CurrentInputLanguage.LayoutName;
如果要跟踪输入语言的更改(如在选择语言时尝试系统中的更改),则可以使用:system.Windows.Forms.InputLanguage

样本:

Microsoft.Win32.SystemEvents.UserPreferenceChanged += new UserPreferenceChangedEventHandler(SystemEvents_UserPreferenceChanged);
string inputLanguage = System.Windows.Forms.InputLanguage.CurrentInputLanguage.LayoutName;

谢谢但是如何获得新的区域设置呢?我用以下代码解决了我的问题:CultureInfo.CurrentCulture.ClearCachedData()@露露,我不知道那种方法。。。每天学点东西;)当用户更改系统的区域性时。CultureInfo.CurrentCulture是旧设置,您必须调用CultureInfo.CurrentCulture.ClearCachedData()以清除旧设置并获取新设置。我在ClearCachedDate中遇到问题,并发现此问题,从而解决了问题。我必须启动一个任务并返回缓存的结果。