Windows 通常安裝多種輸入法,手動切換麻煩。若應用程式能依據欄位自動切換(如 Access 資料輸入體驗),將大幅提升專業度。.NET 提供 System.Windows.Forms.InputLanguage 類別支援此功能。
CurrentInputLanguage:取得/設定目前執行緒輸入法。DefaultInputLanguage:取得預設輸入法。InstalledInputLanguages:列舉系統安裝的輸入法集合。LayoutName:取得輸入法在系統匣的註冊名稱。RichTextBox、ComboBox、Button。Form_Load:填入 InstalledInputLanguages 的 LayoutName 至 ComboBox,預選目前輸入法。ComboBox_SelectedIndexChanged:切換 CurrentInputLanguage。InputLanguageChanged 事件:偵測系統匣手動切換,同步更新 ComboBox 選項。private void Form1_Load(object sender, EventArgs e)
{
foreach (InputLanguage il in InputLanguage.InstalledInputLanguages)
comboBox1.Items.Add(il.LayoutName);
comboBox1.SelectedIndex = InputLanguage.InstalledInputLanguages.IndexOf(InputLanguage.CurrentInputLanguage);
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
InputLanguage.CurrentInputLanguage = InputLanguage.InstalledInputLanguages[comboBox1.SelectedIndex];
}
private void ChangeInput(object sender, InputLanguageChangedEventArgs e)
{
int i = InputLanguage.InstalledInputLanguages.IndexOf(e.InputLanguage);
if (i >= 0 && i < InputLanguage.InstalledInputLanguages.Count)
comboBox1.SelectedIndex = i;
}