最近在做項目的時候,需要使用comboBox實作類別似ie下拉式清單一樣的功能!最直接的思路是監聽comboBox的textChanged事件,當事件發生時,從資料(我是用arrayList暫存資料的)中匹配出符合的字串,然後添加到comboBox的下拉式清單中。
1:如何在textChanged顯示下拉式清單,因為顯示下拉式清單一般是使用者點擊下拉的箭頭顯示的,後來使用 comboBox1.DroppedDown = true; 可以顯示下拉式清單的內容。
2:向下拉式清單新增內容: comboBox1.Items.Add(str); 使用此語句可以添加str到下拉式清單中
3:刪除下拉式清單的內容?因為當comboBox的text改變時,原來匹配的下來列表中的內容可能不再匹配,這樣我的思路是每次text改變時將下拉式清單內容全部刪除,然後再重新遍曆集合,將匹配的內容重新添加到下拉式清單裡: comboBox1.Items.Clear(); 可是這個語句會出現一個問題,就是text中的游標會自動跑到最左端:這樣,這條思路沒有繼續下去,而且發現這樣實現有時候滑鼠會丟失游標,感覺很不好!
4:後來查到comboBox和textBox支援內建的搜尋提示功能,在form的InitializeComponent()中添加如下語句:
this.comboBox1.AutoCompleteCustomSource.AddRange(new string[] { "10.152.154.89", "10.152.154.90", "10.152.252.10", "10.152.252.11" });
this.comboBox1.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest;
this.comboBox1.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.CustomSource;
其中this.comboBox1.AutoCompleteCustomSource.AddRange(new string[] { "10.152.154.89", "10.152.154.90", "10.152.252.10", "10.152.252.11" });是將資料添加到搜尋範圍
this.comboBox1.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest;
是設定comboBox完成內建的搜尋,預設是None,還有Append,和SuggestAppend屬性,除了預設的None都可以實現搜尋提示的功能,只是外觀有所不同而已
this.comboBox1.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.CustomSource;制定搜尋範圍,由於在此我是選用new string[] { "10.152.154.89", "10.152.154.90", "10.152.252.10", "10.152.252.11" }作為自己的搜尋範圍,所以定義為CustomSource
System.Windows.Forms.AutoCompleteSource還有個Allurl屬性,如果將代碼改為
this.comboBox1.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest; this.comboBox1.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.Allurl;
這樣該comboBox可以實現同ie下拉式清單一樣的功能,其他的屬性如AllSystemSources可以自己嘗試,這樣就完成了comboBox的搜尋提示功能。