Изменение свойств элементов управления, которые были добавлены во время выполнения - PullRequest
3 голосов
/ 18 апреля 2010

У меня есть форма, в которой несколько кнопок добавляются во время выполнения с помощью метода 'for'

 public Form()
 {
 for (int i = 0 ... )
  Button b = new Button() 
  b.text =  (string) i ;
  etc..
  etc..
  }

. Теперь я хочу изменить свойство текста кнопок для определенного события. Как это можно сделать? Я пробовал несколько вещей, но ни одна не работала .., так как переменные кнопок находятся внутри метода, они не доступны снаружи.

Спасибо

Ответы [ 2 ]

4 голосов
/ 18 апреля 2010

Переменные не важны (хотя вы могли бы хранить их в одном поле List<T>, если это упростит задачу) Обычный способ сделать это - просмотреть коллекцию Controls (рекурсивно, если необходимо).

foreach(Control control in someParent.Controls) {
    Button btn = control as Button;
    if(btn != null) {
        btn.Text = "hello world";
        // etc
    }
}

Выше предполагается, что все кнопки были добавлены в один родительский элемент управления; если это не так, то идите рекурсивно:

void DoSomething(Control parent) {
    foreach(Control control in parent.Controls) {
        Button btn = control as Button;
        if(btn != null) {
            btn.Text = "hello world";
            // etc
        }
        DoSometing(control); // recurse
    }
}
0 голосов
/ 18 апреля 2010

Вы можете сохранить ссылку на созданную вами кнопку, т. Е. Вы можете иметь список со всеми динамическими элементами управления в нем или, если это всего одна кнопка, сделать объект кнопки объектом уровня класса, чтобы вы могли получить к нему доступ. в любом месте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...