如何在其中一个文本框中输入波斯语

时间:2016-03-25 05:35:15

标签: c#-4.0

我在表单上有几个文本框。我想用波斯语输入其中一个。我找到了这段代码,但第一个字符是用英文输入的。

    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();
    }

1 个答案:

答案 0 :(得分:0)

根据您所描述的内容,听起来“Enter”事件无论出于何种原因都无效。 txtBox_TextChanged事件方法仅在输入第一个字符后执行。因此,语言将在第一个字符后改变。

要测试此理论,请在txtBox_Enter事件方法中输入以下内容:

txtbox.ForeColor = Color.Red;

如果执行“Enter”事件,它会将文本框更改为红色。

如果您无法使用'Enter'事件,请尝试使用'PreviewKeyDown'事件。