【问题标题】:Add userControl2 to Panel2 from userControl1 button in Panel1从 Panel1 中的 userControl1 按钮将 userControl2 添加到 Panel2
【发布时间】:2018-04-02 00:52:33
【问题描述】:

如何从按钮点击userControl1到panel2中获取userControl2?

按下按钮New 显示userControl1 控制Panel1,但我想通过按下userControl1 按钮来显示usercontrol2panel2 userControl2。我做不到。

private void btnNewDay_Click(object sender, EventArgs e) {
  frmMain main = new frmMain();
  main.panel2.Controls.Clear();
  userControls.ucNewDay newDay = new userControls.ucNewDay();
  main.panel2.Controls.Add(newDay);
  main.userControlcontrol = true;
}

【问题讨论】:

    标签: c# .net winforms user-controls


    【解决方案1】:

    您正在使用new frmMain(); 创建一个新表单。您需要的是获取当前表单的句柄。您可以通过简单地使用this 关键字来做到这一点,但这甚至是可选的,您不必使用任何东西。但是,在用户控件中,this 指的是该控件。在这种情况下,请使用 Parent 属性。

    更改第一行:

    frmMain main = new frmMain();
    

    到:

    frmMain main = (frmMain)this.Parent;
    

    或者,您可以使用FindForm() 方法:

    frmMain main = (frmMain)this.FindForm();
    

    【讨论】:

    • 非常感谢您的帮助!我一直在寻找这个大约 1 周的答案