2013-02-10 129 views
2

我使用comboBox.Items.Add(entry);將項目添加到組合框。但是我怎樣才能避免組合框中的重複條目(即同名條目)。是否有任何的lib功能組合框重複條目

回答

11

檢查的項目加入之前:

if (!comboBox.Items.Contains(entry)) 
    comboBox.Items.Add(entry); 
+0

thanxs。此外,是否有任何功能相同的'Items.AddRange' – user1903439 2013-02-10 18:09:47

+1

編號只需在循環中檢查它們。 – 2013-02-10 19:18:02

5

Items集合有一個Contains方法

if (!comboBox.Items.Contains(entry)) { 
    comboBox.Items.Add(entry); 
} 

ComboBox.Items屬性是System.Windows.Forms.ComboBox.ObjectCollection類型,它聲明像這樣的Contains方法

public bool Contains(object value) 

如果你想使用AddRange,你必須提供一個數組中的項目。因此,您必須確保此數組不包含重複項。此外,如果ComboBox已包含項目,則必須確保此數組不包含相同的項目。

讓我們首先假設ComboBox是空的,您的項目是由一些枚舉給出(這可能是比如List<T>或數組):

comboBox.Items.AddRange(
    itemsToAdd 
     .Distinct() 
     .ToArray() 
); 

你必須在頂部有一個using System.Linq;你的代碼。你也可能想訂購這些物品。我認爲他們是string類型:

comboBox.Items.AddRange(
    itemsToAdd 
     .Distinct() 
     .OrderBy(s => s) 
     .ToArray() 
); 

如果ComboBox已包含的項目,你將不得不從添加的項目

comboBox.Items.AddRange(
    itemsToAdd 
     .Except(comboBox.Items.Cast<string>()) 
     .Distinct() 
     .OrderBy(s => s) 
     .ToArray() 
); 

(同樣假設itemsToAdd是排除它們字符串的枚舉。)

1

使用一個HashSet類的控件綁定,如何從演示技術實際上還要考慮,或使用Distinct LINQ過濾重複項的方法。

0

如何鑄造項目String

var check = comboBox1.Items.Cast<string>().Any(c => c.ToString() == "test");