在 C# 中,向文字方塊新增自動完成功能時,現有解決方案僅允許基於前綴進行搜尋。為了克服此限制並啟用更靈活的搜尋選項,需要自訂實作。
一種方法是重寫 OnTextChanged 事件並實作自訂自動完成邏輯。這可以透過在文字方塊下方建立一個清單視圖並根據使用者輸入動態填充它來實現。
例如,這是一個基本實作:
public Form1() { InitializeComponent(); acsc = new AutoCompleteStringCollection(); textBox1.AutoCompleteCustomSource = acsc; textBox1.AutoCompleteMode = AutoCompleteMode.None; textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource; } private void button1_Click(object sender, EventArgs e) { acsc.Add("[001] some kind of item"); acsc.Add("[002] some other item"); acsc.Add("[003] an orange"); acsc.Add("[004] i like pickles"); } void textBox1_TextChanged(object sender, System.EventArgs e) { listBox1.Items.Clear(); if (textBox1.Text.Length == 0) { hideResults(); return; } foreach (String s in textBox1.AutoCompleteCustomSource) { if (s.Contains(textBox1.Text)) { Console.WriteLine("Found text in: " + s); listBox1.Items.Add(s); listBox1.Visible = true; } } } void listBox1_SelectedIndexChanged(object sender, System.EventArgs e) { textBox1.Text = listBox1.Items[listBox1.SelectedIndex].ToString(); hideResults(); } void listBox1_LostFocus(object sender, System.EventArgs e) { hideResults(); } void hideResults() { listBox1.Visible = false; }
這種方法允許您搜尋項目,無論其在字串中的位置如何。您可以透過新增附加功能(例如文字附加、擷取鍵盤命令等)來進一步增強實作。
以上是如何在 C# 中實現前綴匹配之外的靈活自動完成功能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!