2013-03-08 7 views
6

मैं Windows Forms का उपयोग कर रहा हूं। इस कोड के साथ मैं comboBox से listView पर आइटम जोड़ता हूं।डुप्लिकेट आइटम सूची को कैसे रोकें C#

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); 
} 

मुझे डुप्लिकेट आइटमों को रोकने की आवश्यकता है लेकिन काम नहीं, मैं इसे कैसे हल कर सकता हूं?

+2

'Contains' चेकों * संदर्भ * मौजूद है या नहीं, एक" समान नहीं "एक ही आइटम के साथ आइटम। टेक्स्ट 'और (शायद) समान उपसमूह। –

उत्तर

8

आप के बजाय 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); 
} 
+0

आकर्षण की तरह काम करता है! धन्यवाद! –

+0

दोनों काम नहीं कर रहे हैं – CodeOptimizer

11

ListView वर्ग है कि कोई आइटम मौजूद है की जाँच करने के लिए कुछ तरीका प्रदान करता है:

यह की तरह इस्तेमाल किया जा सकता है:

// 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); 
0
if (!listView1.Items.Any(i => i.text == lvi.text)) 
{ 
    listView1.items.Add(lvi) 
} 

मैं बस टेक्स्ट प्रॉपर्टी पर अनुमान लगा रहा हूं, लेकिन मुझे पूरा यकीन है कि वहां है।

वैकल्पिक रूप से - केवल List<string> है और इसे अपनी सूची के लिए डेटा स्रोत के रूप में उपयोग करें।

1

इस कोड मेरे लिए काम किया ContainsKey(string key) का उपयोग करना चाहिए:

if(DialogResult.OK == fileDialogue.ShowDialog()) 
      { 
       foreach (var v in fileDialogue.FileNames) 
       { 
        if (listView.FindItemWithText(v) == null) 
        { 
         listView.Items.Add(v); 
        } 

        else 
        //Throw error message 
0
String csVal = Value; 
ListViewItem csItem = new ListViewItem(csVal); 
if (!listViewABC.Items.ContainsKey(csVal)) 
{ 
    csItem.Name = csVal; 
    listViewABC.Items.Add(csItem); 
} 
संबंधित मुद्दे