我想做一个关于c#的小代码块。
首先想一个带有元素的列表框。 然后想一个空白的文本框。
当我写一封信给文本框时(不要只想信件,想想一个单词,我用textbox1_textchanged拆分它),如果一个元素没有这个单词就必须从列表框中删除。
示例:
这里是列表框元素:
abraham
michael
george
anthony
当我输入“a”时,我希望删除michael和george,然后当我输入“n”时我希望删除abraham(此时总字符串为“an”)...
现在感谢(:
答案 0 :(得分:3)
private void textBox1_TextChanged(object sender, EventArgs e)
{
for (int i = 0; i < listBox1.Items.Count; i++)
{
string item = listBox1.Items[i].ToString();
foreach(char theChar in textBox1.Text)
{
if(item.Contains(theChar))
{
//remove the item, consider the next list box item
//the new list box item index would still be i
listBox1.Items.Remove(item);
i--;
break;
}
}
}
}
答案 1 :(得分:1)
你可以尝试这样的事情。它将与文本框中的内容相匹配,并删除不匹配的内容。
private void textBox1_TextChanged(object sender, EventArgs e)
{
for (int i = 0; i < listBox1.Items.Count ; i++)
{
for (int j = 0; j < textBox1.Text.Length ; j++)
{
if (textBox1.Text[j] != listBox1.Items[i].ToString()[j])
{
if (i < 0) break;
listBox1.Items.RemoveAt(i);
i = i - 1; // reset index to point to next record otherwise you will skip one
}
}
}
}
答案 2 :(得分:1)
您可以过滤不包含文字的项目,并将其从列表框中删除:
private void textBox1_TextChanged(object sender, EventArgs e)
{
var itemsToRemove = listBox1.Items.Cast<object>().Where(x => !x.ToString().Contains(textBox1.Text)).ToList();
foreach(var item in itemsToRemove)
listBox1.Items.Remove(item);
}