试图比较ComboBoxes数组的Selected Value

时间:2017-10-06 08:27:39

标签: c# arrays combobox compare

尝试使用Visual Studio版本15中的Windows窗体在C#中创建应用程序.Id希望能够检查以确保每个comboBox中的每个选定项目都不同。我发现你可以创建一个控件数组,但我遇到的问题是访问该数组中的值以编程方式检查每个控件

如何使用此数组来检查所有值是否都是唯一的并返回一个简单的bool?

Control[] statboxes = { comboBoxA, comboBoxB, comboBoxC, comboBoxD, comboBoxE, comboBoxF };

4 个答案:

答案 0 :(得分:0)

您可以像这样使用linq:

 var result = statboxes.Distinct().Count() == statboxes.Count();

编辑:

要检查唯一选定的项目,请尝试以下操作:

var result = statboxes.Select(s => ((ComboBox)s).SelectedItem).Distinct().Count() == statboxes.Select(s => ((ComboBox)s).SelectedItem).Count();

答案 1 :(得分:0)

使用Combobox.selectedindex,您可以根据索引编号选择项目。使用Combobox.selectedvalue,您可以根据名称选择项目。

至于选择唯一值,您可以使用Combobox.Distinct().Count,这在t2t的答案中有解释。

答案 2 :(得分:0)

您可以使用HashSet<T>.Add(value)方法<{1}}扩展方法

Enumerable.All
如果给定值已成功添加到集合,则

// For example combobox values is of type int var values = new HashSet<int>(); var isUnique = statboxes.All(combobox => values.Add((int)combobox.SelectedValue)); 方法将返回HashSet<T>.Add,如果已存在给定值,则true将返回false

答案 3 :(得分:0)

使用ComboBox数组而不是Control,因此您无需在执行操作时强制转换它:

ComboBox[] statboxes = { comboBoxA, comboBoxB, comboBoxC, comboBoxD, 
comboBoxE, comboBoxF };

然后检查所有组合框是否具有唯一的选定值:

bool IsAllComboBoxesHasDistinctSelectedValue = statboxes.Select<ComboBox,string>((cb) =>cb.SelectedValue.ToString()).Distinct().Count() == statboxes.Count();