-1

我想做一个关于 c# 的小代码块。

首先考虑一个带有元素的列表框。然后想一个空白的文本框。

当我给文本框写一封信时(不要只考虑字母,想想一个词,我用 textbox1_textchanged 拆分它),如果一个元素没有这个词,它必须从列表框中删除。

例子:

这是列表框元素:

abraham
michael
george
anthony

当我输入“a”时,我希望删除 michael 和 george,然后当我输入“n”时,我希望删除 abraham(此时总字符串为“an”)...

现在谢谢(:

4

3 回答 3

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;
                }
            }
        }
    }
于 2011-12-25T00:12:37.543 回答
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
            }

        }

    }
}
于 2011-12-25T01:07:19.527 回答
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);
}
于 2011-12-25T01:19:52.343 回答