本帖最后由 foxd 于 2013-02-22 16:30:19 编辑

解决方案 »

  1.   

    使用反射
    http://www.360doc.com/content/11/0727/21/3705007_136214695.shtml
    http://www.xue5.com/itedu/200802/104297.html
      

  2.   

    利用反射动态创建窗体,下面的WindowsFormsApplication2是窗体的命名空间,你换成你实际的命名空间
               Type typeForm = Type.GetType("WindowsFormsApplication2." + frmName);
                Form aa= Activator.CreateInstance(typeForm) as Form ;
                aa.TopLevel = false;
                this.panel1.Controls.Add(aa);
                aa.Show();
      

  3.   

                Form2 fm3 = new Form2();
                fm3.Text = "No text";
                fm3.TopLevel = false;
                panel1.Controls.Clear();
                panel1.Controls.Add(fm3);
                fm3.Show();
      

  4.   


    侯捷的《深入浅出MFC》就介绍了MFC如何让不支持反射的C++语言拥有RTTI能力的机制。
      

  5.   

    有区别,反射是根据类型动态来生成对象,我说的是生成对象池,空间换效率,对于对象不多,比较固定的场合比较适应。RTTI当年看过觉得也很神奇,其实也就是用宏把生成对象的函数模版化了,关键还是思路要开阔。后来看设计模式,就觉得都是小儿科了。