防止ListBox中的重复条目

时间:2014-03-15 20:21:34

标签: c# listbox

我的C#代码出现了问题..

我想用这段代码做的是,当我从文本框中输入带有相同符号(相同名称)的东西时,它显示我无法将它添加到列表框中两次或更多次。 所以我制作了这段代码:

void Btn_addClick(object sender, EventArgs e)
{
    string thelist = listBox1.Text;
    string text = textBox1.Text;

    if(text == thelist) 
    {
        MessageBox.Show("This name already exists!");
    }
    else
    {
        listBox1.Items.Add(textBox1.Text);
        textBox1.Text = "";
    }   
}

但问题是,只有当我从列表中选择名称并将其与文本框进行比较时,才会显示MessageBox。如果我没有选择任何单词或其他单词,它会添加相同的单词,而不会告诉它已经存在。

2 个答案:

答案 0 :(得分:2)

您正在尝试将TextBox.Text与整个ListBox进行比较。您可能想知道ListBox 是否包含您要输入的文字。

以下内容将非常轻松地实现您想要的结果:

void Btn_addClick(object sender, EventArgs e)
{
    if(listBox1.Items.Contains(textBox1.Text)) 
    {
        MessageBox.Show("This name already exists!");
    }
    else
    {
        listBox1.Items.Add(textBox1.Text);
        textBox1.Text = "";
    }   
}

答案 1 :(得分:0)

您需要遍历ListBox中的所有项目以识别重复项目

试试这个:

void Btn_addClick(object sender, EventArgs e)
{      
    string text = textBox1.Text;
    bool isDuplicate = false;

    foreach (var name in ListBox1.Items)
    {
        if(name.ToString().Equals(text))
        {
            isDuplicate = true;
            break;
        }
    }
    if (isDuplicate) 
    {
      MessageBox.Show("This name already exists!");
    }
    else
    {
        listBox1.Items.Add(text);
        textBox1.Text = "";
    }   
}