如何自动更改TextBox的语言

我在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; } 

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

要检查的事项:

  1. “fa”是一种已安装的语言吗?
  2. 您是否已将textBox1_Enter和textBox1_Leave附加到textBox1调度的事件中?
  3. 您是否通过调试器运行它并检查了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; } } }