c#实现模糊搜索功能的combobox控件,数据源来源与 string[] TUH_ID;不使用数据源绑定的方式
时间: 2024-09-23 12:12:49 浏览: 37
在C#中,如果你想要在ComboBox控件上实现模糊搜索功能,但不想直接使用DataSource属性绑定到`string[] TUH_ID`数组,你可以采用自定义事件处理的方式来实现。这里是一个简单的步骤:
1. 创建ComboBox控件:
```xml
<ComboBox Name="comboBoxSearch" Width="200" Height="25">
</ComboBox>
```
2. 初始化TUH_ID数组:
```csharp
string[] TUH_ID = new string[] { "ID1", "ID2", "ID3", ... }; // 假设这是你的字符串数组
```
3. 添加搜索函数,用于过滤显示的选项:
```csharp
private void FilterItems(string searchText)
{
comboBoxSearch.Items.Clear(); // 清空当前列表
if (searchText.Length == 0) // 如果输入为空,显示全部项
comboBoxSearch.Items.AddRange(TUH_ID);
else
{
foreach (string item in TUH_ID)
{
if (item.Contains(searchText)) // 检查是否包含搜索文本
comboBoxSearch.Items.Add(item);
}
}
}
```
4. 设置搜索框的TextChanged事件,每当用户输入改变时触发搜索:
```csharp
private void textBoxSearch_TextChanged(object sender, EventArgs e)
{
FilterItems(textBoxSearch.Text);
}
```
5. 还可以在TextBox上添加一个焦点失去事件,确保在选择其他元素后也进行搜索:
```csharp
private void textBoxSearch_Validated(object sender, EventArgs e)
{
FilterItems(textBoxSearch.Text);
}
```
6. 当用户选择ComboBox时,可以用`SelectedIndexChanged`事件更新搜索框,提供更好的用户体验:
```csharp
private void comboBoxSearch_SelectedIndexChanged(object sender, EventArgs e)
{
textBoxSearch.Text = comboBoxSearch.SelectedItem.ToString();
}
```
记得要在窗体加载完成后初始化`FilterItems`函数,以便在开始时就对所有项进行筛选。
阅读全文