我希望当焦点进入 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
作为输入语言,否则会将语言设置为默认输入语言。您可以使用操作系统上安装的另一种文化输入语言。
注意:如果您在表单中广泛需要这样的功能,作为一个想法,您可以创建一个 Extender Provider提供 InputLanguage
属性的组件。这样您就可以在设计时设置属性。这就是 ToolTip
或 HelpProvider
等组件的工作方式。
关于c# - 如何更改特定控件的 Windows 窗体应用程序中的输入语言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35813818/