winform 使用listbox和textbox做一个类似combobox的控件组合
时间: 2023-12-10 09:05:08 浏览: 104
可以通过使用ListBox和TextBox控件结合实现类似ComboBox的效果。具体步骤如下:
1.在窗体上添加一个ListBox和一个TextBox控件,设置ListBox的Visible属性为False。
2.在TextBox的TextChanged事件中,根据用户输入的内容动态筛选ListBox中的项,并将ListBox的Visible属性设置为True。
3.在ListBox的SelectedIndexChanged事件中,将所选项的值赋给TextBox,并将ListBox的Visible属性设置为False。
示例代码:
```csharp
public partial class Form1 : Form
{
private List<string> dataList = new List<string> { "Apple", "Banana", "Cherry", "Durian", "Grape" };
public Form1()
{
InitializeComponent();
listBox1.DataSource = dataList;
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
var filterData = dataList.Where(d => d.StartsWith(textBox1.Text, StringComparison.OrdinalIgnoreCase)).ToList();
listBox1.DataSource = filterData;
listBox1.Visible = filterData.Any();
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
textBox1.Text = listBox1.SelectedItem?.ToString();
listBox1.Visible = false;
}
}
```
在上述示例中,我们使用了一个字符串列表作为数据源,在TextBox的TextChanged事件中根据用户输入的内容筛选出符合条件的项,并将ListBox的数据源设置为筛选结果,然后将ListBox的Visible属性设置为True。在ListBox的SelectedIndexChanged事件中,将所选项的值赋给TextBox,并将ListBox的Visible属性设置为False。
阅读全文