2013-03-15 6 views
0

Как правило, я пытаюсь превратить приведенный ниже код в цикл. Каждый раз, когда я пытаюсь выполнить итерацию с помощью элементов управления, я, похоже, нахожусь в тупике и не могу понять, как обновить соответствующую метку или проверить соответствующее текстовое поле.Цифры, текстовые поля и ярлыки

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"; 
    } 
} 
+2

Я честно не понимаю в чем проблема ... – Otiel

+0

Что именно вы хотите ???? –

+0

Re думаю. Используйте тег, расширьте элементы управления. Просто подумайте, сколько стоит оставаться на шаг, чтобы это продолжало работать, и как вы собираетесь это проверить? –

ответ

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

+1 для упоминания тега или любого другого метода развязки. Использование таких элементов управления, как это, требует обслуживания кошмар –

+0

Я всегда делал 'if (control.GetType() == typeof (object))'. Это намного легче читать. :) – MrBlue

+0

Мне нужно уйти и научиться делать это немного лучше, но я дам ему шанс. Большое спасибо, очень ценю это. – totalfreakingnoob

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"; 
        } 
       } 
      } 
+0

ничего себе думая :) – Sachin

Смежные вопросы