combobox重复条目

我正在使用comboBox.Items.Add(entry);将项添加到combobox中comboBox.Items.Add(entry); 。 但是如何避免combobox中的重复条目(即同名条目)。 有没有libfunction

添加前检查项目:

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

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或数组):

 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()) .Distinct() .OrderBy(s => s) .ToArray() ); 

(再次假设itemsToAdd是字符串的枚举。)

使用HashSet类绑定控件,如何依赖于表示技术,或使用LINQ的Distinct方法来过滤重复项。

如何将项目转换为String

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