我正在尝试创建一个像 Windows 窗体这样的类,它将具有多个新功能。它只是一个“更好”的版本Form
,使我在这个确切的程序上的工作更容易。这是我到目前为止所拥有的:
public class SuperForm : Form
{
protected abstract void OnSizeChanged(object sender, EventArgs e);
public SuperForm()
{
this.SizeChanged += OnSizeChanged;
}
}
不多,它只确保每个表单都必须定义OnSizeChanged
在大小更改时将自动调用的表单,但还会有更多。
接下来我需要的是一个方法,它将类/类型作为参数并初始化该类型的新对象,自动将其添加到Controls
然后返回该对象。这是一个关于我希望它是什么样的示例代码(不起作用):
public cls NewControl(ClassType cls) // This obviously doesn't work.
// I need it to return an object of type "cls" parameter.
{
cls newControl = new cls();
this.Controls.Add(newControl);
return newControl;
}
我知道ClassType
这不是一个有效的类型,这就是我需要帮助的原因。
然后我基本上可以这样称呼它:
Button b = this.NewControl(Button);
这将返回一个新按钮并将其添加到this.Controls
. 当一个控件被初始化时,我最终可能需要做更多这些常见的任务,所以这就是为什么我想在它自己的方法中使用它。
这在 C# 中可能吗?如果没有,是否有任何解决方法?一种方法是为每个继承自Control
这样的类定义一个方法:
public Button NewControl(Button b);
public TextBox NewControl(TextBox tb);
public ListBox NewControl(ListBox lb);
但这对我来说似乎不是一个有效的选择。