Winform如何實現ComboBox模糊查詢


最近朋友問了一個關於Winform實現ComboBox模糊查詢的知識點,自己好久沒有搞Winform了,就上手練了一下,廢話不多說,進入正題。

前台設計:

  前台就是一個簡單的Form窗體+一個ComboBox控件。

思路整理:

  1.用一個List<string> listOnit存放初始化數據,用一個List<string> listNew存放輸入key之后,返回的數據。

  2.用上面的listOnit初始化ComboBox數據源進行綁定。

  3.在TextUpdate方法內部,添加實現方法。

      首先進入方法,先清除ComboBox的內容,然后將輸入的內容去listOnit初始化的數據中比對,找出對應數據,然后放入listNew存放數據,最后將listNew數據重新賦值給        ComboBox。

 

后台代碼實現:

  實現效果截圖:

  從左到右模糊查詢:(例如輸入:張)

  可以得出正常模糊查詢的結果。

  不是從左到右模糊查詢呢?(例如輸入:三)

  也可以查詢到想要的數據,OK,完成。

 

  實現過程中的問題:

  1.綁定數據一開始用的DataSource方式,但是寫到下面重新給ComboBox設置數據源的時候,報錯:不能為已經設置DataSource的combobox賦值。

      解決方式:將賦值方式改為:Item.Add(obj)或者Item.AddRange(obj)方式

  2.下拉框的內容一直在增加

      解決方式:當文本框文本改變時,清空下拉框的內容,然后再添加數據。

  3.輸入文本改變時,沒有自動彈出下拉框顯示已經查詢好的數據。

      解決方式:設置comboBox的DroppedDown 屬性為True。

  4.ComboBox文本框改變事件一開始選擇用的是TextChanged事件,但是當在界面用 上 下鍵盤選擇時,出現bug,不能進行選擇。

      解決方式:將文本框改變事件換為TextUpdate事件,然后添加實現方法。

  5.當在ComboBox輸入內容時,內容文本是倒序輸出的,光標位置始終在最前面。

      解決方式:設置光標的顯示位置,this.comboBox1.SelectionStart = this.comboBox1.Text.Length;

  6.輸入內容改變時,用鼠標選擇下拉列表項的時候,鼠標指針消失,被下拉框覆蓋掉。

      解決方式:設置鼠標狀態為一開始的默認狀態,Cursor = Cursors.Default;

  

 

作者: 楓上善若水
出處: http://www.cnblogs.com/xilipu31/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接。
正在看本人博客的這位童鞋,我看你氣度不凡,談吐間隱隱有王者之氣,日后必有一番作為!旁邊有“推薦”二字,你就順手把它點了吧,相得准,我分文不收;相不准,你也好回來找我!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM