picasso2 Ответов: 1

Получение доступа к родительским элементам управления из usercontrol


Получение доступа к родительским элементам управления из usercontrol
-В моей основной форме (Form1) у меня есть listBox (listBox1)
-Я также добавил пользовательский элемент управления (UserControl1) в свой проект
-На userControl я добавил кнопку (Button1)
То, что я хочу сделать, это нажать на кнопку, и текст будет добавлен в listBox1
Попробовал несколько вариантов,но мне это не удалось.

Что я уже пробовал:

пытался добавить этот код для кнопки button1 в пользовательских элементов управления
ListBox элемент управления ListBox = (ParentForm.Элементы["список listbox1"] как ListBox элемент); элемент управления ListBox.Items. Add ("Тест");
//Не повезло

также добавил получить/установить
общественный разделяемого класса файл usercontrol1 : элемент управления UserControl
public Form1 ParentForm {get;set}

для кнопки я тоже попробовал
Контроль p = это.ParentForm;
ListBox listBox = (ParentForm. Controls ["listBox1"] as ListBox);
список.Items. Add ("Тест");
//не повезло

1 Ответов

Рейтинг:
0

Dave Kreskowiak

Ваш UserControl никогда не должен заботиться о каких-либо элементах управления, которые находятся в контейнере, содержащем ваш UserControl. Он никогда не должен хотеть манипулировать какими-либо элементами управления за пределами самого UserControl.

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

НИКОГДА НЕ ДЕЛАЙ ЭТОГО!

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

Теперь родительская форма или контейнер могут подписаться на событие и решить, что делать с самими данными, например, добавить их в список под контролем родительской формы.