2016-03-25 12 views
0

フォームに複数のテキストボックスがあります。私はペルシア語でちょうど1つをタイプしたいと思う。このコードが見つかりましたが、最初の文字は英語で入力されています。テキストボックスの1つにペルシャ語を入力する方法

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

は、あなたが説明したものから、何らかの理由で動作していない「と入力し」イベントのように聞こえます。 txtBox_TextChangedイベントメソッドは、最初の文字が入力された後にのみ実行されます。したがって、言語は最初の文字の後に変更されます。 txtBox_Enterイベントメソッドに次のように入力し、この理論をテストする

txtbox.ForeColor = Color.Red; 

「入力」イベントが実行される場合には、テキストボックスの赤に変更されます。

'Enter'イベントが機能しない場合は、 'PreviewKeyDown'イベントを使用してみてください。

関連する問題