首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# 實現類似詞典軟體的自動完成 TextBox (AutoComplete) 功能

     編輯:程式設計綜合問答

需求

輸入「a」時下拉顯示以「a」開頭的單詞列表,參考金山/有道詞典體驗。

核心方案

WinForms TextBox 內建 AutoCompleteMode、AutoCompleteSource、AutoCompleteCustomSource 三屬性即可零代碼實現基本功能。

實現步驟

  1. 準備詞彙集合 (List<string>、資料庫、檔案)。
  2. 建立 AutoCompleteStringCollection 並填充:
var source = new AutoCompleteStringCollection();
source.AddRange(words.ToArray()); // words 為 string[]
  1. 設定 TextBox 屬性:
txtInput.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
txtInput.AutoCompleteSource = AutoCompleteSource.CustomSource;
txtInput.AutoCompleteCustomSource = source;

進階:非同步載入大量詞彙

詞彙量大 (十萬+) 時,UI 執行緒會卡頓。採用 Task.Run 背景載入,再回 UI 執行緒賦值:

private async void Form_Load(object sender, EventArgs e)
{
    var words = await Task.Run(() => LoadWordsFromDb()); // 耗時操作
    var source = new AutoCompleteStringCollection();
    source.AddRange(words.ToArray());
    txtInput.AutoCompleteCustomSource = source;
}

WPF 方案

使用 AutoCompleteBox (WPF Toolkit) 或第三方庫 (如 MaterialDesignThemes 的 ComboBox 啟用 IsEditable + IsTextSearchEnabled)。

參考資源

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