基本上我正试图将下面的代码变成循环。每当我尝试迭代控件时,我似乎遇到了某种死胡同,无法弄清楚如何更新相关标签或检查相关文本框。
if (checkBox1.Checked && !string.IsNullOrEmpty(textBox1.Text))
{
if (RemoteFileExists(textBox1.Text) == true)
{
label1.Text = "UP";
}
else
{
label1.Text = "DOWN";
}
}
if (checkBox2.Checked && !string.IsNullOrEmpty(textBox2.Text))
{
if (RemoteFileExists(textBox2.Text) == true)
{
label2.Text = "UP";
}
else
{
label2.Text = "DOWN";
}
}
if (checkBox3.Checked && !string.IsNullOrEmpty(textBox3.Text))
{
if (RemoteFileExists(textBox3.Text) == true)
{
label3.Text = "UP";
}
else
{
label3.Text = "DOWN";
}
}
答案 0 :(得分:2)
您可以使用Form.Controls
来迭代页面上的所有控件,例如:
foreach(Control control in Controls) {
if (control is Checkbox) {
...
} else if (control is TextBox) {
...
} else {
...
}
}
但是,这将执行所有控件,因此可能效率不高。您可以使用Tag
控件和LINQ扩展来改进它,例如:
IEnumerable<Checkbox> needed_checkboxes = Controls.Where(control => control is Checkbox && control.Tag == someValue);
答案 1 :(得分:0)
您可以通过动态查找控件来使用它:
for (int i = 1; i < count; i++)
{
CheckBox chbx = (CheckBox) this.FindControl("checkBox" + i);
TextBox txtb = (TextBox)this.FindControl("textBox" + i);
Label lbl = (Label) this.FindControl("label" + i);
if (chbx.Checked && !string.IsNullOrEmpty(txtb.Text))
{
if (RemoteFileExists(txtb.Text) == true)
{
lbl.Text = "UP";
}
else
{
lbl.Text = "DOWN";
}
}
}