C# - Billentyűzet nyelvi kiosztás változásának figyelése

forráskód letöltése
Ha alkalmazásunknak szüksége van arra az információra, hogy milyen billentyűzet kiosztások vannak, mely éppen az aktív ezek közül, melyik pillanatban vált át a felhasználó az egyikről a másikra, akkor ezeket könnyedén lekérdezhetjük programunk futása közben.
E feladatok megvalósításában az InputLanguage osztály segít bennünket. Az aktuális billentyűzet kiosztás lekérdezéséhez az InputLanguage osztály CurrentInputLanguage property-je szolgál. Ezen belül a név meghatározását a Culture property DisplayName property-je adja.
    public Form1()
    {
      InitializeComponent();
      statusBar1.Panels[0].Text = InputLanguage.CurrentInputLanguage.Culture.DisplayName;
    }
Ha látni szeretnénk azt a listát, melyben felsorolásra kerül az összes telepített kiosztásnak neve, akkor az InputLanguage osztály InstalledInputLanguages property-t kell használnunk. Itt egy foreach ciklussal könnyedén végigmehetünk az összes elemen és megjeleníthetjük a neveket.
    private void button1_Click(object sender, System.EventArgs e)
    {
      foreach(InputLanguage il in InputLanguage.InstalledInputLanguages) 
      {
        listBox1.Items.Add(il.Culture.DisplayName);
      }                                                
    }
Ha programunknak arról is azonnal értesülnie kellene, hogy mikor változott meg az aktuális kiosztás, akkor hozzunk létre egy eseménykezelőt a Form InputLanguageChanged eseményéhez. Itt az „e” paraméterben kapunk egy InputLanguage nevű property-t, mely a már használt InputLanguage osztályt tartalmazza.
    private void Form1_InputLanguageChanged(object sender, System.Windows.Forms.InputLanguageChangedEventArgs e)
    {
      statusBar1.Panels[0].Text = e.InputLanguage.Culture.DisplayName;
    }