none
Массив из нескольких контролов RRS feed

  • Вопрос

  • Необходимо в один массив поместить несколько типов контролов, например как Чекбоксы и ТекстБоксы. Это можно сделать как 

    private List<Control> cont=new List<Control>();

    Но так же необходимо, проходить по массиву и если натыкаемся на нужный нам чекБокс, изменить значение checked. как реализовать?
    27 марта 2013 г. 17:49

Ответы

  • Например, по имени.

    ваш код будет примерно следующим

    foreach (var ctrl in this.controls)
                {
                    if (ctrl is TextBox)
                    {
                        if ((ctrl as TextBox).Name.Equals("textBox2"))
                        {
                            (ctrl as TextBox).Text = "Hello MSDN!";
                        }
                    }
                }

    Можно немного упростить условия и написать так:

    foreach (var ctrl in this.controls)
                {
                    if ((ctrl is TextBox) && (ctrl as TextBox).Name.Equals("textBox2"))
                        {
                            (ctrl as TextBox).Text = "Hello MSDN!";
                        }
                }

    • Изменено A.Permyakov 27 марта 2013 г. 18:11
    • Помечено в качестве ответа Magals 27 марта 2013 г. 18:34
    27 марта 2013 г. 18:07
  • Ну к примеру ищем все CheckBox у которых IsChecked = false и меняем это значение:

                foreach (var checkBox in controlList.OfType<CheckBox>().Where(checkBox => checkBox.IsChecked == false))
                {
                    checkBox.IsChecked = true;
                }


    • Изменено Kirill Bessonov 27 марта 2013 г. 18:13
    • Помечено в качестве ответа Magals 27 марта 2013 г. 18:34
    27 марта 2013 г. 18:10

Все ответы

  • Например, по имени.

    ваш код будет примерно следующим

    foreach (var ctrl in this.controls)
                {
                    if (ctrl is TextBox)
                    {
                        if ((ctrl as TextBox).Name.Equals("textBox2"))
                        {
                            (ctrl as TextBox).Text = "Hello MSDN!";
                        }
                    }
                }

    Можно немного упростить условия и написать так:

    foreach (var ctrl in this.controls)
                {
                    if ((ctrl is TextBox) && (ctrl as TextBox).Name.Equals("textBox2"))
                        {
                            (ctrl as TextBox).Text = "Hello MSDN!";
                        }
                }

    • Изменено A.Permyakov 27 марта 2013 г. 18:11
    • Помечено в качестве ответа Magals 27 марта 2013 г. 18:34
    27 марта 2013 г. 18:07
  • Ну к примеру ищем все CheckBox у которых IsChecked = false и меняем это значение:

                foreach (var checkBox in controlList.OfType<CheckBox>().Where(checkBox => checkBox.IsChecked == false))
                {
                    checkBox.IsChecked = true;
                }


    • Изменено Kirill Bessonov 27 марта 2013 г. 18:13
    • Помечено в качестве ответа Magals 27 марта 2013 г. 18:34
    27 марта 2013 г. 18:10