我有几种形式,我希望能够为某个表单添加一个按钮,无论代码在哪里。
通常情况下,我会执行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);
这样可行,但我想确切地指定将其添加到哪个表单
答案 0 :(得分:0)
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