我正在使用comboBox.Items.Add(entry);
向组合框添加项目。但是如何避免组合框中的重复条目(即同名条目)。有没有lib功能
答案 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)
答案 3 :(得分:0)
如何将项目投放到String
var check = comboBox1.Items.Cast<string>().Any(c => c.ToString() == "test");