0

Esentially I'm trying to turn the below code into a loop. Every time I try to iterate through controls I seem to hit some sort of dead end and can't figure out how to update the relevant label or check the relevant textbox.

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";
    }
}
4

2 に答える 2

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);
于 2013-03-15T10:15:11.820 に答える
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";
                    }
                }
            }
于 2013-03-15T10:17:39.050 に答える