我希望我的組合框啓用自動完成功能,如果用戶正在鍵入的內容位於項目列表中,並且如果它不存在,我想將其包含在我的列表中。組合框 - 自動完成+自由輸入
例如:
組合框與這些項目: 「搖滾,鄉村,爵士」。 如果用戶開始鍵入「Ro ...」組合框自動完成到「搖滾」。但如果用戶輸入「藍調」,我想將其添加到我的項目。所以它會像:「搖滾,鄉村,爵士,布魯斯」。
我該怎麼做?
我希望我的組合框啓用自動完成功能,如果用戶正在鍵入的內容位於項目列表中,並且如果它不存在,我想將其包含在我的列表中。組合框 - 自動完成+自由輸入
例如:
組合框與這些項目: 「搖滾,鄉村,爵士」。 如果用戶開始鍵入「Ro ...」組合框自動完成到「搖滾」。但如果用戶輸入「藍調」,我想將其添加到我的項目。所以它會像:「搖滾,鄉村,爵士,布魯斯」。
我該怎麼做?
您可以使用AutoCompleteMode和AutoCompleteSource用於自動完成。
comboBox1.AutoCompleteMode = AutoCompleteMode.Append;
comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems;
,或者你可以在Visual Studio中選擇您的組合框後,通過屬性面板做到這一點...
對於增加新的項目到您的組合框;
private void comboBox1_TextChanged(object sender, EventArgs e)
{
if (!comboBox1.Items.Contains(comboBox1.Text))
{
comboBox1.Items.Add(comboBox1.Text);
comboBox1.Items.RemoveAt(comboBox1.Items.Count - 2);
}
}
如果我這樣做使用MVVM,我將開始與ComboBox
並對其進行修改,以適應。
如果您使用內置ComboBox
的DevExpress
,您幾乎可以免費獲得該產品。簡單地與項目填補了下拉列表中了,你想自動完成,然後設置選項:
如果你想更有趣,你可以編寫一個服務來監聽用戶當前輸入的內容,然後調整適合的下拉列表項目。下拉列表中與用戶類型相匹配的任何項目將自動顯示。我會用無擴展(RX)和Throttle
要做到這一點,請參閱:
爲了記錄,我與DevExpress沒有任何關係,這只是我熟悉的一個。 Telerik也是一個很好的圖書館,毫無疑問他們有類似的東西。 – Contango