2012-08-29 93 views
-1

我有一個組合框彈出數據庫表中的項目。 當我改變文本我重新填充與數據庫表中的項目組合框。Combobox在下拉列表中選擇項目C#

但是,當我輸入文本,並且帶有建議的列表打開時,未選擇列表中的項目。 而我想要一個項目被選中,所以當你按下輸入,它成爲選定的項目。

這是一個winforms應用程序。

謝謝。

cbxNaam.Items.Clear(); 
string query = "SELECT bedr_naam FROM tblbedrijf WHERE bedr_naam LIKE '%" + cbxNaam.Text + "%'"; 
string[] bedrijfsnamen = Functions.DataTableToArray(Global.db.Select(query)); 
cbxNaam.Items.AddRange(bedrijfsnamen); 
cbxNaam.Select(cbxNaam.Text.Length + 1, 0); 
+2

is this winforms/wpf/web? – Giedrius

+0

你能提供一些示例代碼嗎? –

+0

是它的winforms –

回答

0

如果您正在使用的WinForms

你必須使用AutoCompleteMode設置爲AutoCompleteMode.AppendAutoCompleteSource設置爲AutoCompleteSource.ListItems

請檢查這個答案ComboBox AutoComplete Custom Capabilities

+0

但是,當我使用它它只autocompletes從字符串的開始。所以,當我輸入字符串中途名稱的部分字符串它不起作用 –

+0

對不起,Windows組合框AutoComplete [與僅前綴匹配](http://stackoverflow.com/a/2314248/1547740)..所以你必須編寫你的自定義控件。 – Krishnakumar

1

您需要選擇一個在列表中的項目 - 它看起來像你試圖選擇一些項目中的文本。

將其他評論中的某些信息拼湊在一起看起來像是要在下拉列表中的文本上做一個通配符匹配,爲此,您需要修改文本更改事件/方法的處理程序的行爲,要麼從組合框派生並覆蓋它,要麼在您的實例上添加一個事件偵聽器。

然後你可以做你的陣列中的數據的搜索 - 像

private void cbxNaam_TextChanged(object sender, EventArgs e) 
{ 
    var matchingStrings = bedrijfsnamen.Where(s => s.Contains(cbxNaam.Text)); 
    cbxNaam.SelectedItem = matchingStrings[0]; 
} 

,你需要小心一點多個匹配項目等

+0

這將選擇組合框項目,我希望它在下拉列表的下拉列表中選擇一個項目 –

+0

請參閱上面的文本更新 - 我認爲這是更多你想要的 – dice

0

我不知道,如果做的我理解你很好,如果沒有,對不起!下面是我的回答:

如果您想爲要填充的組合框,當你寫在你的組合框,你需要它的屬性設置:

AutoCompleteMode到追加 和 AutoCompleteSource到listItems中

上輸入您的項目將被選中。

希望我幫了你嗎? Rock On !!! :-)

相關問題