How to prevent duplication of listView elements in C #

I am using Windows Forms . With this code, I add items to the listView from comboBox .

 ListViewItem lvi = new ListViewItem(); lvi.Text = comboBox1.Text; lvi.SubItems.Add(""); lvi.SubItems.Add(""); lvi.SubItems.Add(""); lvi.SubItems.Add("") if (!listView1.Items.Contains(lvi)) { listView1.Items.Add(lvi); } 

I need to prevent duplication of elements, but not work, how can I solve this?

+6
source share
5 answers

You should use ContainsKey(string key) instead of Contains(ListViewItem item)

 var txt = comboBox1.Text; if (!listView1.Items.ContainsKey(txt)) { lvi.Text = txt; // this is the key that ContainsKey uses. you might want to use the value // of the ComboBox or something else, depending the combobox is freetext // or regarding your scenario. lvi.Name = txt; lvi.SubItems.Add(""); lvi.SubItems.Add(""); lvi.SubItems.Add(""); lvi.SubItems.Add(""); listView1.Items.Add(lvi); } 
+8
source

The ListView class provides several ways to check if an item exists:

It can be used as:

 // assuming you had a pre-existing item ListViewItem item = ListView1.FindItemWithText("item_key"); if (item == null) { // item does not exist } // you can also use the overloaded method to match subitems ListViewItem item = ListView1.FindItemWithText("sub_item_text", true, 0); 
+11
source

This code worked for me:

 if(DialogResult.OK == fileDialogue.ShowDialog()) { foreach (var v in fileDialogue.FileNames) { if (listView.FindItemWithText(v) == null) { listView.Items.Add(v); } else //Throw error message 
+1
source
 if (!listView1.Items.Any(i => i.text == lvi.text)) { listView1.items.Add(lvi) } 

I just guess about the text property, but I'm sure there.

Alternatively, just use List<string> and use it as a data source for your list.

0
source
 String csVal = Value; ListViewItem csItem = new ListViewItem(csVal); if (!listViewABC.Items.ContainsKey(csVal)) { csItem.Name = csVal; listViewABC.Items.Add(csItem ); } 
0
source

All Articles