使用自定义逻辑克服 C# 自动完成中仅前缀搜索的限制
尽管内置 C# 自动完成功能存在限制,但这是可能的实现自定义自动完成解决方案,允许您根据字符串的任何部分搜索结果。当提供不完整或部分信息作为输入时,这特别有用。
自定义自动完成技术
C# 中的标准自动完成功能仅在前缀搜索模式下运行,这意味着它只能查找以输入文本开头的匹配项。为了克服这个问题,您可以通过重写 OnTextChanged 等事件来实现自己的自动完成逻辑。
示例实现
实现自定义自动完成的有效方法是使用 ListBox显示潜在的匹配项。以下是修改后的代码片段:
// Initialize list box listBox1.Visible = false; listBox1.SelectedIndexChanged += listBox1_SelectedIndexChanged; listBox1.LostFocus += listBox1_LostFocus; // Handle text changes in the text box 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)) { listBox1.Items.Add(s); listBox1.Visible = true; } } } // Hide the list box on selection void listBox1_SelectedIndexChanged(object sender, System.EventArgs e) { textBox1.Text = listBox1.Items[listBox1.SelectedIndex].ToString(); hideResults(); } // Hide the list box when it loses focus void listBox1_LostFocus(object sender, System.EventArgs e) { hideResults(); } // Hide the list box void hideResults() { listBox1.Visible = false; }
增强
示例中提供的自定义自动完成解决方案可以通过添加更多功能来进一步增强,例如:
以上是除了仅前缀匹配之外,如何在 C# 中实现全字符串搜索自动完成?的详细内容。更多信息请关注PHP中文网其他相关文章!