组合框重复输入

时间:2013-02-10 17:59:07

标签: c# combobox

我正在使用comboBox.Items.Add(entry);向组合框添加项目。但是如何避免组合框中的重复条目(即同名条目)。有没有lib功能

4 个答案:

答案 0 :(得分:11)

在添加之前检查项目:

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

答案 1 :(得分: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是字符串的枚举。)

答案 2 :(得分:1)

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

答案 3 :(得分:0)

如何将项目投放到String

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