首页 > 解决方案 > 在我处理后添加用户控件

问题描述

我正在通过处理它来关闭 usercontrol1,我需要在我的 form1 中以编程方式再次添加它。只有在我关闭 usercontrol2 后,usercontrol1 才会被添加回 form1,它会向 form1 发送事件以在面板中再次添加 usercontrol1。我知道如何发送和接收事件,但我不知道如何再次添加 usercontrol1,因为似乎我在 form1 中的 usercontrol1 实例化在我处理 usercontrol1 后被忽略了。此外,我使用 .Dispose() 是因为我想在每次调用时触发 usercontrol1 的 Load 事件。

标签: c#winforms

解决方案


您创建一个新的 UserControl1 实例(或任何您的用户控件类型),然后将其添加到面板中。

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();
}

推荐阅读