您正在做的是通过循环覆盖tat
每次的值,例如:
ComboBox1 "Hello" tat = false
ComboBox2 Empty tat = true
ComboBox3 "World" tat = false again!
Return: false
如果任何组合框为空,我假设您想返回 true ;您可以按如下方式修改您的功能:
public bool val2()
{
foreach (Control item in panel1.Controls.OfType<ComboBox>())
{
if (item.Text == string.Empty)
{
// We know one is empty so we must return true.
return true;
}
}
// We know none are empty so we can return false.
return false;
}
或者由于您已经在使用 LINQ,您可以使用
public bool val2()
{
return panel1.Controls.OfType<ComboBox>().Any(cb => cb.Text == String.Empty);
}
这将做完全相同的事情。
编辑:看起来您的控件ComboBox
不是的直接子级panel1
,而是在某种自定义用户控件中。因此,您将需要类似的东西
return panel1.Controls
.OfType<YourCustomUserControlType>()
.Select(uc => uc.NameOfYourComboBox)
.Any(cb => cb.Text == String.Empty);
因此,该OfType
行现在选择您的自定义用户控件,该Select
行获取您的用户控件之一并找到ComboBox
,并且该Any
行检查它们是否都有值。
原始风格的替代品:
public bool val2()
{
foreach (YourCustomUserControlType item in
panel1.Controls.OfType<YourCustomUserControlType>())
{
ComboBox cb = item.NameOfYourComboBox;
if (cb.Text == string.Empty)
{
// We know one is empty so we must return true.
return true;
}
}
// We know none are empty so we can return false.
return false;
}