我正在使用comboBox.Items.Add(entry);
. 但是如何避免组合框中的重复条目(即同名条目)。有没有lib函数
问问题
11569 次
4 回答
12
添加前检查项目:
if (!comboBox.Items.Contains(entry))
comboBox.Items.Add(entry);
于 2013-02-10T18:01:28.777 回答
4
Items
集合有一个Contains
方法
if (!comboBox.Items.Contains(entry)) {
comboBox.Items.Add(entry);
}
ComboBox.Items
属性是 type 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
是字符串的枚举。)
于 2013-02-10T18:03:05.553 回答
0
将物品投射到String
var check = comboBox1.Items.Cast<string>().Any(c => c.ToString() == "test");
于 2013-02-11T16:14:43.180 回答