问题
我想实现这样一个功能,将类型作为参数传递:
已经有FrmA、FrmB、FrmC、FrmS等几个窗体类了,
需要实现这样一个函数:
fun(参数A)
{
参数A F = new 参数A();
F.Show();
}
fun(FrmA);//就能新建并打开一个FrmA窗口
答案
用反射:
主调类:
private void button3_Click(object sender, EventArgs e)
{
bindForm("WindowsApplication1.UserControl1");
}
private void bindForm(string f)
{
System.Type t = System.Type.GetType(f);
object ff = Activator.CreateInstance(t,null);
System.Reflection.MethodInfo method = t.GetMethod("setText");
System.Reflection. BindingFlags flag = System.Reflection. BindingFlags.Public |System.Reflection. BindingFlags.Instance;
object returnValue = method.Invoke(ff, null);
}
各窗体:
public partial class UserControl1 : Form
{
public UserControl1()
{
InitializeComponent();
}
public void setText()
{
Text = "kkk";
Show();
}
}