现在可以获取需要打开窗口的名称  string FrmName="frm1";  但是如何打开对应名称的窗体啊~ 

解决方案 »

  1.   

    不能直接实例化窗口,然后show出来吗
      

  2.   

     foreach (Form form in Application.OpenForms)
                {
                    if (form.Text == "frm1")
                    {
                        form.Show();
                    }
                }
      

  3.   

    怎么实例化啊  求指点下~ 
    FrmName  myfrom =New FrmName(); 这样不行啊 
      

  4.   


    得到的是窗体的NAME值 不是TEXT值  如果获得两值 分别能打开窗体吗?
      

  5.   


    Form1  f=new Form();
    f.Show();
     这样还不行啊
      

  6.   


    Assembly asm = Assembly.Load("xxxx");//程序集名 
    object frmObj = asm.CreateInstance(path + formName.Trim());//程序集+form的类名。 
    Form frms = (Form)frmObj;
    frms.Show();
      

  7.   

    找到了~  可以根据反射来做.但你必须知道程序集的名称 和Form命名空间
    例如:在MyCompany.MyClass.Dll中有一个窗体MyCompany.MyClass.MyForm,数据库中该窗体记录为MyCompany.MyClass|MyCompany.MyClass.MyForm
    (注:一般情况下程序集名称和对象命名空间是一样的,但理论上是可以不一样的,所以数据库中两项都要记录)使用时:string openForm=dr["FormName"].ToString().Trim();
    string[] openFormTemp=openForm.Split(new char[]{'|'});
    string aName=openFormTemp[1];
    string cName=openFormTemp[2];System.Reflection.Assembly _Assembly = System.Reflection.Assembly.Load(aName);  
    Type _FormType = _Assembly.GetType(cName,true,true);  
    object _LoadForm = Activator.CreateInstance(_FormType, null);  
    Form frm=_LoadForm as Form;if (frm !=null)
    {
      frm.Show();
    }