Добавить пользовательский элемент управления после того, как я его утилизировал - PullRequest
0 голосов
/ 07 декабря 2018

Я закрываю usercontrol1, удаляя его, и мне нужно добавить его снова программно в моей форме1.usercontrol1 будет добавлен обратно в form1 только после того, как я закрою usercontrol2, который отправляет событие в form1, чтобы снова добавить usercontrol1 на панель.Я знаю, как выполнять отправку и получение событий, но я не знаю, как снова добавить usercontrol1, потому что кажется, что мое создание usercontrol1 в form1 просто игнорируется после того, как я избавился от usercontrol1.Кроме того, я использую .Dispose (), потому что я хочу вызывать событие Load usercontrol1 каждый раз, когда я его вызываю.

1 Ответ

0 голосов
/ 07 декабря 2018

Вы создаете новый экземпляр UserControl1 (или независимо от того, какой у вас тип usercontrol), а затем добавляете его на панель.

public void MyTriggeringEvent(object sender, EventArgs e)
{
    UserControl1 usercontrol1 = new UserControl1();
    panel1.Controls.Add(usercontrol1);
}

MyTriggeringEvent - это событие, которое вы обрабатываете, в которое вы хотите повторно добавитьusercontrol1.

Хотя существует гораздо более простой способ достичь желаемого без удаления и повторного добавления usercontrol1.

Ваш usercontrol1 имеет такой код:

public void usercontrol1_Load(object sender, EventArgs e)
{
    // Lots of initialization code here
}

Вместо того, чтобы оставлять код инициализации в обработчике события Load, переместите его в свой собственный метод, затем вызовите этот метод из обработчика события Load и в своем вызове MyTriggeringEvent этот же метод:

Этот код входит в usercontrol1:

public void MyInitCode()
{
    // Lots of initialization code here
}

public void usercontrol1_Load(object sender, EventArgs e)
{
    MyInitCode();
}

Этот код входит в вашу форму, где вы обрабатываете событие:

public void MyTriggeringEvent(object sender, EventArgs e)
{
    usercontrol1.MyInitCode();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...