Динамически добавить контроль из базы .NET - PullRequest
0 голосов
/ 07 мая 2018

Есть способ добавить элементы управления в WinForm из кода. Это довольно просто, например:

Button ^btn = gcnew Button;

btn->Size.Width = 70;
btn->Size.Height = 30;
btn->Text = "test button";

this->Controls->Add(btn);

И у нас есть кнопка. Но когда для них много элементов управления и параметров, код становится слишком массивным.

Раньше я работал с IDE, у которого была приятная особенность: в обычном конструкторе вы могли создавать любые типы элементов управления и устанавливать для них любые предпочтения и методы, но они сохранялись в специальной базе, которую вы могли подключить в коде и получить любой готовый контроль от него.

Есть ли что-нибудь подобное в Visual Studio?

1 Ответ

0 голосов
/ 08 мая 2018

Немного подумав и благодаря совету Сергея Шевченко, мне удалось создать то, что похоже на то, что я хотел. Создание UserControl или просто другой формы не большая разница. Поэтому я попробовал оба способа.

Итак, я создал еще одну форму (или UserControl - тоже самое) с именем "my_controls_form.h" с несколькими элементами управления. И главное - сделать эти элементы управления общедоступными , чтобы вы могли получить к ним доступ из другой формы.

Когда дизайнер создает их, он устанавливает по умолчанию так:

private: System::Windows::Forms::Button^ my_button_btn;
private: System::Windows::Forms::Label^ my_label_lbl;

Поэтому я изменил private на public , включил этот новый заголовок формы в основную форму .cpp (#include "my_controls_form.h"), а затем просто добавил их в основную форму, например так:

my_controls_form ^frm = gcnew my_controls_form;
Button ^btn = frm->my_button_btn;
Label ^lbl = frm->my_label_lbl;

btn->Name = "__my_button";
btn->Location = Point(0,70);

lbl->Name = "__my_lalbel";
lbl->Location = Point(70,70);

this->Controls->Add(btn);
this->Controls->Add(lbl);

Тем не менее у меня есть некоторые сомнения по этому поводу. Например, все методы для этих элементов управления записаны в другом классе (форме). И есть проблема вставки элемента управления несколько раз ... Есть идеи, как вставить несколько идентичных элементов управления ? Что еще может пойти не так ?

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