如何使一个函数有一个参数接收控件的类型(如Button,GroupBox,Panel,TextBox,Label ...等)
private void CreateControl()
{
Button myButton=new Button();
this.Controls.Add(myButton);
}
我需要设置一个参数来控制控件的类型并不总是按钮。
请帮忙
答案 0 :(得分:6)
如果您想传递类型,可以通过 generic 来完成:
// Probably, you'd rather return T (created control), not void
public void CreateControl<T>()
where T: Control, new() {
this.Controls.Add(new T());
}
...
CreateControl<Button>();
答案 1 :(得分:0)
如果您不想使用Reflection复杂化,可以创建enum
并将其作为参数发送:
public enum ControlType
{
Button,
Label,
TextBox,
//....
}
然后,您的方法调用将是
private void CreateControl(ControlType control)
{
switch(control)
{
case Button :
Button myButton=new Button();
this.Controls.Add(myButton);
break;
//case etc
}
}
答案 2 :(得分:-1)
Control类是所有Winforms控件的基类。您可以将参数设置为基本类型,但它也将接受更多派生类型。
尝试:
public void CreateControl(Control control)
{
this.Controls.Add(control);
}