将控件添加到其他窗体

本文关键字:其他 窗体 添加 控件 | 更新日期: 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