如何在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组件。 这样您就可以在设计时设置属性。 这就是ToolTip
或HelpProvider
等组件的工作方式。