一个窗体上有许多的button,每一个button的Text代表要打开窗体的名字,现在想写一个通用的函数,只要将button的Text传过去就可以打开相应的窗体,这个函数应该怎么实现?应该很简单吧?但我是菜鸟,C#的居然不会写,汗。请高手指教//有很多个这样的button,或者能否写一个通用的事件来处理?
private void btn1_Click(object sender, EventArgs e)
{
showForm(this.btn1.Text);
}
private void showForm(string FormName)
{ //这个函数应该怎么写呢?
}
private void btn1_Click(object sender, EventArgs e)
{
showForm(this.btn1.Text);
}
private void showForm(string FormName)
{ //这个函数应该怎么写呢?
}
private void showForm(string FormName)
{
string namespace_str="TestCsdnWindows.";//注意加上窗体所在的命名空间
string name =namespace_str + FormName;//
Type t = Type.GetType(name, true);
Form frm = (Form)Activator.CreateInstance(t);
frm.Show();
}
呵呵,这是有难度的问题
假设你的button的text等于form的名字
那么,
用类的名字来创建一个实体,需要用到反射(Reflection)
Dim arrObj() As Object '用来传递类的构造函数的参数
Dim TypeGet As Type=Type.GetType("Form的名字",False,True)
Dim Form1 As Form = Activator.CreateInstance(TypeGet, arrObj)
Form1.Show
Dim arrObj() As Object '用来传递类的构造函数的参数
Dim TypeGet As Type=Type.GetType("Form的名字",False,True)
Dim Form1 As Form = Activator.CreateInstance(TypeGet, arrObj)
Form1.Show
如果不想用反射,而窗体上的button不是太多的话,就在方法里通过Switch case 来判断吧.