将控件添加到其他窗体
本文关键字:其他 窗体 添加 控件 | 更新日期: 2023-09-27 18:37:04
我有几个表单,我希望能够向某个表单添加一个按钮,无论代码在哪里。
通常我会做类似 this.Controls.Add(button)
的事情,但我不希望它被添加到该表单中。我试过做一些类似Form1 frm = new Form1()
和frm.Controls.Add(button)
的事情,但那也没有用。我需要怎么写?
此代码不起作用,表单仍然是空白的
Button b = new Button();
b.Size = new Size(50,50);
b.Location = new Point(50,50);
new Form1().Controls.Add(b);
没有错误,但未添加任何内容。
我找到了一种解决方法。
Control ctrl = this;
ctrl.Controls.Add(b);
这有效,但我宁愿有一种方法来准确指定将其添加到哪种形式
Button b = new Button();
b.Size = new Size(50,50);
b.Location = new Point(50,50);
new Form1().Controls.Add(b); // This will do nothing you want.
向窗体添加控件会将其添加到运行控件的单个实例中,而不是添加到一般窗体中。
试试这个:
Form1 form = new Form1();
Button b = new Button();
...
form.Controls.Add(b);
form.ShowDialog(); // Or .Show()
Form1 anotherForm = new Form1();
anotherForm.ShowDialog(); // This instance will NOT have the added button
如果您从其他表单执行此操作,也可以尝试以下操作:
// Constructor
this._otherForm = new Form1(); // save reference of the other form, to be able to add controls to it later
// Anywhere in the code
this._otherForm.Show(); // will display the other form
// On user action, for example on button click
this._otherForm.Controls.Add(c); // will add the control c to the other form