2013-06-21 22 views
7

Mam aplikacji WinForm w C# i chcę TextBox, aby zmienić język automatycznie, gdy zostanie skoncentrowany.Jak zmienić język TextBox automatycznie

Próbowałem ten kod:

private void textBox1_Enter(object sender, EventArgs e) 
{ 
    SetKeyboardLayout(GetInputLanguageByName("fa")); 
} 
private void textBox1_Leave(object sender, EventArgs e) 
{ 
    SetKeyboardLayout(GetInputLanguageByName("eng")); 
} 
public static InputLanguage GetInputLanguageByName(string inputName) 
{ 
    foreach (InputLanguage lang in InputLanguage.InstalledInputLanguages) 
    { 
     if (lang.Culture.EnglishName.ToLower().StartsWith(inputName)) 
     { 
      return lang; 
     } 
    } 
    return null; 
} 
private void SetKeyboardLayout(InputLanguage layout) 
{ 
    InputLanguage.CurrentInputLanguage = layout; 
} 

Ale kiedy wprowadzić tekstowym, język się nie zmienia. Co mogę zrobić?

+6

„To nie działa” nie jest dopuszczalnym sposobem opisania problemu. Podaj więcej szczegółów. –

+2

po wejściu do pola tekstowego, język się nie zmienia. – amirhossein

+0

Następnie powiedz tak w swoim pytaniu, aby ludzie nie musieli czytać komentarzy, aby rozwiązać problem. –

Odpowiedz

4

Co należy sprawdzić:

  1. Czy "fa" zainstalowany język?
  2. Czy dołączasz textBox1_Enter i textBox1_Leave do zdarzeń wysyłanych przez textBox1?
  3. Czy uruchomiłeś go za pomocą debuggera i sprawdzono nazwę GetInputLanguageByName oraz czy wywoływany jest właściwy język i utracony?
+1

odpowiedź 1 jest twierdząca. "fa" jest językiem zainstalowanym, ale ja najczęściej używam "perskiego", odpowiedź 2 brzmi: nie, nie jestem załączony Zdarzenia, ale zrobiłem to teraz. to zadziałało. bardzo dziękuję za odpowiedź. – amirhossein

0

Spróbuj ..

private void textBox1_Enter(object sender, EventArgs e) 
{ 
    SetKeyboardLayout("FA"); 
} 


private void SetKeyboardLayout(InputLanguage layout) 
{ 
foreach (InputLanguage Lng in InputLanguage.InstalledInputLanguages) 
{ 
    If (Lng.Culture.EnglishName.ToUpper.StartsWith(layout)) 
    { 
     InputLanguage.CurrentInputLanguage = Lng; 
    } 

} 

} 
Powiązane problemy