如何在Windows窗体应用程序中更改输入语言以进行特定控件?

我希望当焦点进入TextBox ,将语言更改为特定语言(例如波斯语),当焦点离开TextBox ,将语言更改为之前设置的原始语言。

如何在特定控件聚焦时更改Windows窗体应用程序中的输入语言?

这是我尝试过的,但我不希望用户按任何键,我想自动更改语言。

 private void textBox1_KeyDown(object sender, KeyEventArgs e) { if(e.Shift && e.Alt) { MessageBox.Show("***language of keybord changed***"); } } 

您可以使用InputLanguage.CurrentInputLanguage编程方式更改输入语言。

它足以处理您的控件的Enter事件并将InputLanguage.CurrentInputLanguage设置为所需的语言,并处理控件的Leave事件并将其设置回以前选择的输入语言。

在下面的代码中,我在输入TextBox1时将输入语言设置为Persian ,并在我离开控件时将其设置为以前的语言:

 InputLanguage original; private void textBox1_Enter(object sender, EventArgs e) { original = InputLanguage.CurrentInputLanguage; var culture = System.Globalization.CultureInfo.GetCultureInfo("fa-IR"); var language = InputLanguage.FromCulture(culture); if (InputLanguage.InstalledInputLanguages.IndexOf(language) >= 0) InputLanguage.CurrentInputLanguage = language; else InputLanguage.CurrentInputLanguage = InputLanguage.DefaultInputLanguage; } private void textBox1_Leave(object sender, EventArgs e) { InputLanguage.CurrentInputLanguage = original; } 

要测试该示例,您应该在操作系统上安装fa-IR作为输入语言,否则它会将语言设置为默认输入语言。 您可以使用已知安装在操作系统上的另一种文化输入语言。

注意:如果您在表单中广泛需要此类function,那么您可以创建一个提供InputLanguage属性的Extender Provider组件。 这样您就可以在设计时设置属性。 这就是ToolTipHelpProvider等组件的工作方式。