あなたがしていることは、ループを介して毎回の値を上書きすることです。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
1 つを取得して を見つけ、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;
}