如何检查列表框中是否存在项目以及如何检查列表框中是否有重复项?在csharp

时间:2019-04-30 08:12:07

标签: c# .net

private void button1_Click(object sender, EventArgs e)
        {
            listBox1.Items.Add(textBox1.Text);
       }
   private void button2_Click(object sender, EventArgs e)
        {
            string val = listBox1.Text.Trim();
            if (listBox1.Items.Contains(val)) {
                listBox1.Items.RemoveAt(listBox1.SelectedIndex);
            }
            else
            {
                MessageBox.Show("There is no items present");
            }
        }

元素从文本框输入到列表框。如果输入相同的数据,则。怎么检查?或msg框应显示和     同时如果没有项目,该如何从列表框中删除项目。

3 个答案:

答案 0 :(得分:1)

您可以检查在文本框中输入的值是否已经在列表框中:

bool listContainsItem = Listbox.Items.Any(item => item.Value == textboxValue);

if(listContainsItem)
{
  // ... item is in listbox, do your magic
}
else
{
  // ... item is not in listbox, do some other magic 
}

您可以在文本框的Onchange事件中执行此操作,或者在单击按钮时...为我们提供更多背景信息,以便我们为您提供更好的解决方案。

答案 1 :(得分:1)

您可以使用HashSet作为数据源,以确保您的列表包含唯一元素。

例如:

HashSet<string> ListBoxSource = new HashSet<string>();

private void button2_Click(object sender, EventArgs e)
{
    string val = listBox1.Text.Trim();
    // ListBoxSource.Add(val) Return true if val isn't present and perform the adding
    if (ListBoxSource.Add(val))
    {
        // DataSource needs to be a IList or IListSource, hence the conversion to List
        listBox1.DataSource = ListBoxSource.ToList();
    }
    else
    {
        MessageBox.Show("Item is already in list");
    }
}

答案 2 :(得分:0)

您可以通过单击列表中的每个项目并单击添加按钮时要添加的项目名称进行比较来检查是否有重复的项目:

    private void addBtn_Click(object sender, EventArgs e)
    {
        bool similarItem = false;

        if (!String.IsNullOrEmpty(itemText.Text.Trim()))
        {
            foreach (string listItem in itemListBox.Items)
            {
                if (listItem == itemText.Text)
                {
                    MessageBox.Show("Similar item detected");
                    similarItem = true;
                    break;
                }
            }

            if(!similarItem)
                itemListBox.Items.Add(itemText.Text);
        }
    }

要在没有项目时单击删除按钮时提示用户,所选索引将为-1,您可以以此为条件来提示用户:

    private void deleteBtn_Click(object sender, EventArgs e)
    {
        if (itemListBox.SelectedIndex > -1)
            itemListBox.Items.RemoveAt(itemListBox.SelectedIndex);
        else
            MessageBox.Show("No item exist in the list box, operation fail");
    }