c#实现模糊搜索功能的combobox控件,控件名为skinComboBox3,数据源来源与 string[] TUH_ID;不使用数据源绑定的方式
时间: 2024-09-23 19:12:48 浏览: 30
在 C# 中,如果你想要在 ComboBox 控件 skinComboBox3 实现模糊搜索功能,并且数据源是从字符串数组 TUH_ID 来的,但不想直接通过 DataSource 绑定,你可以手动编写一些代码来实现这个自定义的功能。下面是一个简单的步骤:
1. 首先,在窗体加载完成后,填充 ComboBox:
```csharp
private void Form_Load(object sender, EventArgs e)
{
if (TUH_ID != null)
{
skinComboBox3.Items.Clear();
foreach (string item in TUH_ID)
skinComboBox3.Items.Add(item);
}
}
```
2. 创建一个 `FindItem` 方法来实现模糊匹配搜索,用户输入将用于查找匹配项:
```csharp
private string FindItem(string searchTerm)
{
List<string> matchingItems = new List<string>();
for (int i = 0; i < skinComboBox3.Items.Count; i++)
{
if (skinComboBox3.Items[i].ToString().Contains(searchTerm, StringComparison.OrdinalIgnoreCase))
matchingItems.Add(skinComboBox3.Items[i].ToString());
}
return matchingItems.Count > 0 ? matchingItems.FirstOrDefault() : "";
}
// 在需要的地方调用此方法,比如文本框失去焦点或按下回车键时
private void textBoxSearch_TextChanged(object sender, EventArgs e)
{
skinComboBox3.SelectedItem = FindItem(textBoxSearch.Text);
}
```
3. 当用户输入发生变化时,触发 `textBoxSearch_TextChanged` 事件,更新 ComboBox 的显示:
```csharp
private void textBoxSearch_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
textBoxSearch.TextChanged -= textBoxSearch_TextChanged;
string selectedValue = FindItem(textBoxSearch.Text);
if (!string.IsNullOrEmpty(selectedValue))
skinComboBox3.SelectedIndex = skinComboBox3.Items.IndexOf(selectedValue);
textBoxSearch.TextChanged += textBoxSearch_TextChanged;
}
}
```
阅读全文