2012-04-17 51 views
26

在組合框中選擇一個項目我有一個組合框,其中有數百個項目。用戶必須能夠將文本輸入到組合框中。在用戶輸入文本時,必須選擇或列出以輸入值開頭的項目。用戶必須能夠連續輸入。我的組合框DropDownStyle是DropDownList通過鍵入

例如: 雖然通過鍵入在組合框中選擇一個名稱,它只允許一個字母。所以如果我輸入「A」,它將跳轉到以「A」開頭的第一個字母。當我連續輸入組合框時,選擇的項目會根據當前的按鍵而改變。如果我按「As」,組合框查看以「s」開頭的項目。

我正在使用Win窗體。

在此先感謝..

+1

WPF?的WinForms? ASP.NET? – 2012-04-17 08:50:10

+0

類似樣的問題張貼[這裏] [1] [1]:http://stackoverflow.com/questions/2257899/how-to-filter-combobox-values-in-winforms – Adil 2012-04-17 08:51:19

+0

製作DropDownStyle'DropDown' – Dan 2012-04-17 08:52:11

回答

50
comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDown; 
comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend; 
comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems; 
+3

您也可以使用這些AutoComplete選項通過DropDownList的'DropDownStyle'來做到這一點 - 它不會明確地向用戶顯示他們到目前爲止輸入的關鍵字。然而,當你想保持ComboBox.Items不可變時,這很好。 – 2014-03-21 16:53:13

+6

您應該先設置Source然後設置Mode,否則會引發NotSupportedException。那麼它完美的作品 – Gaeburider 2014-05-08 13:48:20

+0

完美的解決方案 – 2017-09-21 11:14:19

-1

您將必須連接到TextChanged事件。當文本 發生更改時,請使用DataView過濾列表並採用第一個 結果的文本,並將組合框的文本設置爲該文本。您當然必須在您的處理程序中檢查 ,以確定是否處理 事件(當您更改文本時,將觸發另一個TextChanged事件)。 當然,您還需要突出顯示他們輸入的文本,並且 將插入符號放在適當的位置。

+0

你的方法是不必要的複雜。 – reformed 2016-04-22 19:24:43