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

C# WinForms ComboBox 按拼音首字母過濾:自定義控件實現

     編輯:程式設計綜合問答

需求

ComboBox 輸入拼音首字母(如 bj),下拉列表自動過濾顯示匹配漢字(如「北京」、「北江」),類似 12306 車站選擇。

實現方案

  1. 數據源準備:數據庫表增加 PinyinFirst 列(存首字母大寫),或運行時用 PinyinHelper (如 PinYinConverter 庫) 動態生成。
  2. 繼承 ComboBox 重寫:
    • 設置 DropDownStyle = DropDownList 或 DropDown。
    • 處理 TextUpdate/KeyUp 事件,根據輸入文本過濾 DataSource(或內部 BindingList),重新綁定。
    • 使用 CurrencyManager 暫停/恢復 UI 刷新,避免閃爍。
  3. 現成開源控件:

關鍵細節

  • 多音字處理:取首個讀音或全部首字母並存(如「重慶」→ CQ/ZQ)。
  • 大小寫不敏感匹配。
  • 無匹配時顯示「無結果」或保持全量列表。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved