我要写一个类`  类里面实现窗体的跳转```
这个类:
class a()
{
    public void aa( string c)
     {
        string dd="";
         if(c=="dd")
             {
                  dd u=new dd();
                   u.show();
             }
     }
}
当我在程序中点击按钮的时候只需要把这个方法调过去  传进一个参数`  就能实现窗体的跳转~~  不用在按钮下面对它进行实例化`~  其中dd是程序中的任何一个窗体的名字~(不包括当前的窗体)dd是一个变量`  也就是说我把这个类拿到任何一个程序里面都可以用`都可以实现窗体的跳转~  现在的问题是:这个dd不能实例化`  因为它现在是一个string 类型的`  比如说,现在我有五个窗体  form1 form2 form3 form4 form5     在from1中一个按钮下调用这个方法,当参数为form3时就弹出form3
参数为form5时就弹出form5     请问我现在要怎么办才能做到呢  请教大家帮我出出主意~给个方法  谢谢了`解决了马上结帖

解决方案 »

  1.   

    public void aa( string c) 
    ==
    为什么不
    public void aa(Form f) 
      

  2.   

    Form f  和string c 有什么区别吗?  我不懂这个东西~  
      

  3.   

    你传个Form对象过去,当然将来可以Show出来,但你传个字符串过去,要得到其类名,必须要使用反射,就看楼主目前的回答,貌似对你有些难度
      

  4.   

    是啊 我反射不懂...现在我写成这样子了      class fdi
        {
            public void ss(Form d)
            {
                
            }
        }
    我实例化d还是不行`~  再指点一下可以不? 
      

  5.   

    搞定了`  明天早上到公司就结贴  谢谢大家的帮助和支持~  谢谢amandag
      

  6.   

    先建立个静态类,然后在Form1的按钮单击实践中添加调用代码就可以了.
    静态类:    static class SomeStaticClass
        {
            public static void ShowForm(string s)
            {
                switch (s)
                {
                    case "Form2":
                        {
                            Form2 fm = new Form2();
                            fm.Show();
                            break;
                        }
                    case "Form3":
                        {
                            Form3 fm = new Form3();
                            fm.Show();
                            break;
                        }
                    //...
                }
            }
        }调用代码        private void button1_Click(object sender, EventArgs e)
            {
                SomeStaticClass.ShowForm("Form2");
            }
      

  7.   

    用反射,需要类的完整名称            string formNameSpac = "WindowsApplication1.";
                string formName = "Form2";            Form form = (Form)System.Type.GetType(formNameSpac + formName).InvokeMember(
                    "",
                    BindingFlags.CreateInstance,
                    null,
                    null,
                    null);            form.Show();
      

  8.   

    Assembly myAss=Assembly.GetAssembly(this.GetType());string formName=textBox1.text;

    Type t = myAss.GetType(myAss.GetName().Name+"."+formName);

    Form myForm=(Form)t.InvokeMember("",BindingFlags.CreateInstance,null,null,null);myForm.Show();