尝试使用Visual Studio版本15中的Windows窗体在C#中创建应用程序.Id希望能够检查以确保每个comboBox中的每个选定项目都不同。我发现你可以创建一个控件数组,但我遇到的问题是访问该数组中的值以编程方式检查每个控件
如何使用此数组来检查所有值是否都是唯一的并返回一个简单的bool?
Control[] statboxes = { comboBoxA, comboBoxB, comboBoxC, comboBoxD, comboBoxE, comboBoxF };
答案 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();