2016-03-25 2 views
0

Ich habe mehrere Textfelder auf dem Formular. Ich möchte einen von ihnen nur auf Persisch eingeben. Ich habe diesen Code gefunden, aber das erste Zeichen ist in Englisch getippt.Wie man nur in Persisch in einer der Textfelder tippt

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

Antwort

0

Von dem, was Sie beschrieben haben, klingt es wie das 'Enter' Ereignis funktioniert nicht, aus welchem ​​Grund auch immer. Die txtBox_TextChanged-Ereignismethode wird erst ausgeführt, nachdem das erste Zeichen eingegeben wurde. Daher wird sich die Sprache nach dem ersten Zeichen ändern.

diese Theorie zu testen, Folgendes in der txtBox_Enter Ereignismethode ein:

txtbox.ForeColor = Color.Red; 

Es wird die Textbox rot ändern, wenn das ‚Enter‘ Ereignis ausführt.

Wenn das Ereignis "Enter" nicht funktioniert, versuchen Sie es mit dem Ereignis "PreviewKeyDown".

Verwandte Themen