请你解释为什么这不起作用?
int count = 0;
foreach (Control c in this.Controls)
{
if (c is TextBox)
{
TextBox textBox = c as TextBox;
if (textBox.BackColor == Color.Green)
{
count++;
}
}
}
if (count == 40)
{
SchemaForm ff = new SchemaForm();
ff.Show();
this.Hide();
}
}
这是一项测试,在检查完所有数据后,我需要将学生重定向到另一页。所以,我必须检查,如果所有文本框都有green.BackColor,如果所有文本框都是,那么我们继续进入另一个页面。
答案 0 :(得分:1)
您的代码是正确的。可能有任何TextBox
缺失,但没有Green
颜色,或者您可能错误地计算了它们。
修改强>
正如您所解释的,TextBoxes
中包含了所有GroupBoxes
,因此您需要遍历所有groupBoxes
。
bool IsAllGreen = true;
foreach (GroupBox groupBox in this.Controls.OfType<GroupBox>()) //get all GroupBoxes
{
foreach (TextBox textBox in groupBox.Controls.OfType<TextBox>()) //Get all Textboxes for every GroupBox
{
if (textBox.BackColor != Color.Green) //if any textbox is not Green, it will not go further
{
IsAllGreen = false;
break;
}
}
}
if (IsAllGreen)
{
SchemaForm ff = new SchemaForm();
ff.Show();
this.Hide();
}
答案 1 :(得分:0)
我认为问题在于if语句:
if (c is TextBox)
{
TextBox textBox = c as TextBox;
if (textBox.BackColor == Color.Green)
{
count++;
}
}
您可能想要检查它的类型,如果是,请更正:
if (typeof(TextBox) == c.GetType()) {
TextBox textBox = c as TextBox;
if (textBox.BackColor == Color.Green)
{
count++;
}
}