所以我有两种形式。在表单1上,我创建了一个名为panel1的面板。我的问题是,是否可以将控制权传递给另一个表单并从另一个表单添加控件。这是我目前的代码:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public Control AccessPanel
{
get { return panel1; }
set { panel1.Controls.Add(value); }
}
}
窗体2:
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
MainForm = this.MainForm;
}
private void Form2_Load(object sender, EventArgs e)
{
this.MainForm.AccessPanel1.Controls.Add(/*Some Control*/)
}
}
我真的很欣赏正确方向的一点。
提前致谢!
答案 0 :(得分:0)
我们假设Form1
是主窗体,Form2
是从主窗体打开的另一种形式(可能是对话框)。而且我们假设Form2
想要在第一个表单的面板上添加控件。然后Form2
需要对第一个表单的引用。您可以在构造函数中传递一个:
public partial class Form2 : Form
{
private Form1 _form1;
public Form2(Form1 form1)
{
_form1 = form1;
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
_form1.AddControl(/*Some Control*/);
}
}
我不会让面板本身公开。 Form2
应该尽可能少地了解Form1
。这样可以减少表单之间的依赖关系。
在Form1
我会添加此方法
public void AddControl(Control control)
{
panel1.Controls.Add(control);
}
在Form1
中,您可以这样打开Form2
:
var form2 = new Form2(this); // Pass Form1 through the constructor.
form2.Show(this); // Here `this` is the owner.
// It ensures that Form2 always stays on top of Form1.
或使用ShowDialog
。