如何自动更改文本框的语言

我在C#中有一个Winforms应用程序,我希望TextBox在焦点时自动更改语言。

我试过这段代码:

private void textBox1_Enter(object sender, EventArgs e)
{
    SetKeyboardLayout(GetInputLanguageByName("fa"));
}
private void textBox1_Leave(object sender, EventArgs e)
{
    SetKeyboardLayout(GetInputLanguageByName("eng"));
}
public static InputLanguage GetInputLanguageByName(string inputName)
{
    foreach (InputLanguage lang in InputLanguage.InstalledInputLanguages)
    {
        if (lang.Culture.EnglishName.ToLower().StartsWith(inputName))
        {
            return lang;
        }
    }
    return null;
}
private void SetKeyboardLayout(InputLanguage layout)
{
    InputLanguage.CurrentInputLanguage = layout;
}

但是当我输入文本框时,语言不会改变。 我能做什么?


需要检查的事项:

  • “fa”是已安装的语言吗?
  • 您是否已将textBox1_Enter和textBox1_Leave附加到由textBox1调度的事件?
  • 你是否通过调试器运行它,并检查GetInputLanguageByName是否被调用,并且当焦点被获取并丢失时调用正确的语言?

  • 尝试这个 ..

    private void textBox1_Enter(object sender, EventArgs e)
    {
        SetKeyboardLayout("FA");
    }
    
    
    private void SetKeyboardLayout(InputLanguage layout)
    {
    foreach (InputLanguage Lng in InputLanguage.InstalledInputLanguages)
    {
        If (Lng.Culture.EnglishName.ToUpper.StartsWith(layout))
        {
            InputLanguage.CurrentInputLanguage = Lng;
        }
    
    } 
    
    }
    
    链接地址: http://www.djcxy.com/p/72241.html

    上一篇: How to change the language of a TextBox automatically

    下一篇: Google Chrome Extension with OAuth