Bezdepbonusu7Программирование: статьи и ответы

Вопрос

C # .NET Как динамически получать доступ к полям в пользовательском элементе управления?

Автор вопроса: jimОтветов: 4

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

Я динамически создаю этот UserControl следующим образом:

panel = new btSettings();
this.Controls.Add(panel);
panel.Location = new Point(15, 49);

Просто интересно, как я могу получить доступ к полям в этом элементе управления и во время разработки, когда объект будет создан только во время выполнения?

Спасибо.

winformsuser-controls

Ответы

Ответ 1 · GrayWizardx

Вам нужно будет использовать косвенные ссылки, чтобы делать то, что вы хотите сделать. Прошло некоторое время с тех пор, как я работал с пользовательскими элементами управления, но контейнерные элементы управления должны поддерживать коллекцию Controls (или Children), которая будет возвращать существующие в ней элементы управления. Затем вам нужно будет перебрать их, привести к нужным вам типам и работать с ними. Например:

Foreach(Control target in panel.Controls) {
   if (target.GetType() == typeof(RadioButton) {
      ((RadioButton)target).Checked = true;
      //etc...
   }
}

Ответ 2 · рейтинг 1 · Javier

Отвечая на ваш вопрос...

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

Ответ 3 · Andrew Bezzub

Вы не можете получить несуществующий объект во время разработки.

Ответ 4 · Dan McClain

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы