我有一个名为listBox1的列表框中有大量项目,顶部还有一个textBox(textBox1)。 我希望能够在textBox中输入内容,然后listBox搜索其项并找到包含我所输入内容的项。
例如,假设listBox包含:
"Cat"
"Dog"
"Carrot"
和"Brocolli"
如果我开始输入字母C,那么我希望它显示Cat和Carrot,在我键入a时,它应该继续显示它们两个,但是当我添加r时,它应该从列表中移除Cat。有没有办法做到这一点?
筛选列表框。试试这个:
List<string> items = new List<string>();
private void Form1_Load(object sender, EventArgs e)
{
items.AddRange(new string[] {"Cat", "Dog", "Carrots", "Brocolli"});
foreach (string str in items)
{
listBox1.Items.Add(str);
}
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
listBox1.Items.Clear();
foreach (string str in items)
{
if (str.StartsWith(textBox1.Text, StringComparison.CurrentCultureIgnoreCase))
{
listBox1.Items.Add(str);
}
}
}
这只是一个基本的例子,但它应该能帮助你入门...
public partial class Form1 : Form
{
List<String> _animals = new List<String> { "cat", "carrot", "dog", "goat", "pig" };
public Form1()
{
InitializeComponent();
listBox1.Items.AddRange(_animals.ToArray());
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
String search = textBox1.Text;
if (String.IsNullOrEmpty(search))
{
listBox1.Items.Clear();
listBox1.Items.AddRange(_animals.ToArray());
}
var items = (from a in _animals
where a.StartsWith(search)
select a).ToArray<String>();
listBox1.Items.Clear();
listBox1.Items.AddRange(items);
}
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
listBox1.Items.Clear();
foreach (string str in items)
{
if (str.ToUpper().Contains(textBox1.Text.ToUpper()))
{
listBox1.Items.Add(str);
}
}
}
TextBox
和ListBox
并不是纯C#的一部分... - stakx - no longer contributing