本人欲实现通过一个textbox或者combox实时过滤ListBox的内容。
本例用的是combox,通过一个值改变事件实现实时过滤。
需要注意的是listbox是引用类型,如果是用
var a=lstSequence.Items;
当你执行 lstSequence.Items.Clear();
a也会变成null。
所以我新建了一个用户不可见的ListBox去存储ListBox lstSequence。
private void comboBox1_textChanged(object sender, EventArgs e)
{
var SrchBox = comboBox1.Text.Trim();
listBox1.Items.AddRange(lstSequence.Items);
lstSequence.BeginUpdate();
lstSequence.Items.Clear();
if (!string.IsNullOrEmpty(SrchBox))
{
foreach (string str in listBox1.Items)
{
if (str.Contains(SrchBox))
{
lstSequence.Items.Add(str);
}
}
}
else
lstSequence.Items.AddRange(listBox1.Items);
lstSequence.EndUpdate();
}
最后展示一下效果
过滤后