c# - 在我处理后添加用户控件
问题描述
我正在通过处理它来关闭 usercontrol1,我需要在我的 form1 中以编程方式再次添加它。只有在我关闭 usercontrol2 后,usercontrol1 才会被添加回 form1,它会向 form1 发送事件以在面板中再次添加 usercontrol1。我知道如何发送和接收事件,但我不知道如何再次添加 usercontrol1,因为似乎我在 form1 中的 usercontrol1 实例化在我处理 usercontrol1 后被忽略了。此外,我使用 .Dispose() 是因为我想在每次调用时触发 usercontrol1 的 Load 事件。
解决方案
您创建一个新的 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();
}
推荐阅读
- python - “NameError: name 'insert' is not defined” 当我尝试在方法中使用递归时
- flutter - 底部溢出像素
- flutter - 如何减少 GridViewItems 的 with
- flutter - 有没有办法使用flutter web查找在同一窗口中打开的选项卡的名称?
- reactjs - 在 React 中过滤掉数组时更改数组项的索引
- javascript - 当我在 Bootstrap 日期范围选择器中更改日期时,更改的日期不会触发
- python - 我有朋友发送的 ionic v3 项目,但我无法在我的系统中运行。我试过删除节点模块并重新安装它但没有用
- python - Python [WinError 3] 系统找不到指定的路径:
- amazon-web-services - 使用 Lambda 函数进行 Cognito 属性映射
- python - 地址已在使用中,但在 Python Shell 上正常运行