我在表单上有几个文本框。我想用波斯语输入其中一个。我找到了这段代码,但第一个字符是用英文输入的。
private void txtBox_Enter(object sender, EventArgs e)
{
YourMethod();
}
private InputLanguage GetFarsiLanguage()
{
//Enumerate through InstalledInputLanguages which contains
//all the keyboard layout you’ve installed in your windows.
foreach (InputLanguage lang in InputLanguage.InstalledInputLanguages)
{
if (lang.LayoutName.ToLower() == "farsi" || lang.LayoutName.ToLower() == "persian")
return lang;
}
return null;
}
public void YourMethod()
{
InputLanguage lang = GetFarsiLanguage();
if (lang == null)
throw new NotSupportedException("Farsi Language keyboard is not installed.");
//Set the current language of the system to
//the InputLanguage instance you need.
InputLanguage.CurrentInputLanguage = lang;
}
private void txtBox_TextChanged(object sender, EventArgs e)
{
YourMethod();
}
答案 0 :(得分:0)
根据您所描述的内容,听起来“Enter”事件无论出于何种原因都无效。 txtBox_TextChanged事件方法仅在输入第一个字符后执行。因此,语言将在第一个字符后改变。
要测试此理论,请在txtBox_Enter事件方法中输入以下内容:
txtbox.ForeColor = Color.Red;
如果执行“Enter”事件,它会将文本框更改为红色。
如果您无法使用'Enter'事件,请尝试使用'PreviewKeyDown'事件。