0

我想知道是否有可能过滤列表框。我的意思是我添加了一个项目,并且名称已经在列表框中,你会得到一个 messagebox.show 告诉你“项目已经在列表框中”。并且它不会被添加两次。

4

4 回答 4

2

您不需要遍历项目,因为 ListBox 的 Items 集合实现了“包含”方法。

if (listBox1.Items.Contains(Item))
{
     MessageBox.Show("ListBox already contains Item");
}

在这种情况下,“Item”是另一个 ListBox 中的 Item

更新。你可以写:

if (listBox1.Items.Contains(listBox2.SelectedItem))
        {
            MessageBox.Show("ListBox already contains Item");
        }
        else
        {
            listBox1.Items.Add(listBox2.SelectedItem);
        }
于 2013-06-14T07:28:49.070 回答
0

使用数据绑定可能是解决方案之一:

List<string> SomeData=...
var filtered=SomeData.Where(...);  // <-- Your filtering condition here
listBox1.DataSource = new BindingSource(choices, null); 
于 2013-06-14T07:32:14.707 回答
0

在列表框中添加列表项的事件/方法中,您可以添加如下内容:

// search for list item in the listbox which has the text
ListItem li = theListBox.Items.FindByText("yourListItemName");

if (li != null)
{
// if list item exists display message
  MessageBox.Show("ListBox already contains item with the name");
}
else
{
  theListBox.Items.Add("yourListItemName");
}
于 2013-06-14T08:20:53.297 回答
0

这是一个示例代码,尝试在您的代码中实现它

 ListBox.ObjectCollection ListItem1= ListBox1.Items; 

 if(!string.IsNullOrEmpty(SearchBox.Text)) 
 {
      foreach (string str in ListItem1)
      {                
         if (str.Contains(SearchBox.Text))
         {
             msgbox;
         }
      }
 }
于 2013-06-14T07:20:14.913 回答