首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 控制應用程式輸入法完整指南(一):InputLanguage 核心類別詳解

     編輯:關於C語言

前言

Windows 系統通常安裝多種輸入法,使用者頻繁手動切換影響效率。若應用程式能根據上下文自動切換輸入法 (如 Access 資料輸入時自動切換中/英),將大幅提升專業度與使用體驗。.NET Framework 在 System.Windows.Forms.InputLanguage 類別中提供完整支援。

InputLanguage 核心屬性與方法

成員型別說明
CurrentInputLanguagestatic InputLanguage取得/設定**目前執行緒**的輸入法
DefaultInputLanguagestatic InputLanguage取得系統預設輸入法 (唯讀)
InstalledInputLanguagesstatic InputLanguageCollection取得系統安裝的所有輸入法集合 (唯讀)
LayoutNamestring取得輸入法在語言列顯示的名稱 (如「微軟新注音」、「美式鍵盤」)
CultureCultureInfo取得輸入法關聯的文化特性資訊
HandleIntPtr取得輸入法的系統控制代碼 (進階用途)

InputLanguageCollection 集合操作


// 列舉所有輸入法
foreach (InputLanguage il in InputLanguage.InstalledInputLanguages)
{
    Console.WriteLine($"{il.LayoutName} - {il.Culture.EnglishName}");
}

// 依名稱尋找特定輸入法
InputLanguage chinese = InputLanguage.InstalledInputLanguages
    .Cast()
    .FirstOrDefault(il => il.LayoutName.Contains("Chinese") || il.LayoutName.Contains("微軟"));

// 切換輸入法
if (chinese != null)
    InputLanguage.CurrentInputLanguage = chinese;

實作專案建立步驟

  1. 新建專案:Visual C# 專案 → Windows Forms App → 專案名:InputLanguageRichEdit
  2. 工具箱拖曳控制項:
    • RichTextBox → 命名 richTextBox1 (Dock=Top)
    • ComboBox → 命名 comboBox1 (DropDownStyle=DropDownList)
    • Button → 命名 btnExit (Text=Exit)
  3. 事件訂閱:
    • Form.Load → Form1_Load
    • ComboBox.SelectedIndexChanged → ComboBox1_SelectedIndexChanged
    • Form.InputLanguageChanged → Form1_InputLanguageChanged
    • Button.Click → BtnExit_Click

核心邏輯流程圖解


[Form Load]
    ↓
列舉 InstalledInputLanguages → 填入 ComboBox
    ↓
設定 ComboBox.SelectedIndex = 目前輸入法索引
    ↓
[使用者切換 ComboBox] → CurrentInputLanguage = 選中項
    ↓
[系統熱鍵切換輸入法] → 觸發 InputLanguageChanged 事件
    ↓
事件處理器 → 同步更新 ComboBox.SelectedIndex
    ↓
[雙向同步完成]

為什麼需要 InputLanguageChanged 事件?

使用者可能使用熱鍵 (Win+Space、Alt+Shift、Ctrl+Shift) 切換輸入法,此時程式必須感知變化並同步 UI 狀態,否則 ComboBox 顯示將與實際輸入法脫節。

下篇預告

下一篇將提供完整可編譯執行的 Form 程式碼、執行畫面截圖、進階應用場景 (智慧型欄位切換) 與 WPF 環境下的對應實作方式。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved