我想把一些窗体类名存在treeview的节点的某个地方 ,当我点击到某个节点是就创建哪个窗体 ,但是我不想一个一个的去判断文本去 比如 if node.text='' then  那样现的很傻
以前见有人把窗体类藏在node的tag中 在C#中如何实现呢

解决方案 »

  1.   

    原理是跟比较Text一样的吧
    if(e.TreeNote.Tag != null)
    {
    swith(e.TreeNote.Tag.ToString())
    {
           case "frm_OK"
               ……
           break;
           ……
    }
    }
      

  2.   

    使用反射,根据保存的窗体类名创建窗体对象显示Form form = Activator.CreateInstance(assemblyName, typeName) as Form;form.Show.....只要你保存了 assemblyName, typeName 就可以这样做了
      

  3.   

    上面的CreateInstance后需要Unwrap一下,自己查一下帮助手册
      

  4.   

    这个地方显然是要用反射来实现RTTI。根据窗体类名动态创建窗体类实例
      

  5.   

    动态创建
    使用反射生成一个窗体:
    private void button1_Click(object sender, System.EventArgs e)
    {
    Assembly assm = Assembly.LoadFrom("e:\\WindowsApplication.dll");
    Type TypeToLoad= assm.GetType("WindowsApplication.Form1");

    object obj;
    obj = Activator.CreateInstance(TypeToLoad);
    Form formToShow = null;
    formToShow = (Form)obj;
    formToShow.Show();

    }
    建议把创建好的窗体关联到TreeView。
    比如
    treeNode.Tag = form1;
    在选中节点时
    if(treeNode.Tag as System.Windows.Forms.Form)
    {
       ((Form)treeNode.Tag).Show();
    }
      

  6.   

    我新学c#时间不长 
    不明白 Assembly assm = Assembly.LoadFrom("e:\\WindowsApplication.dll");
    Type TypeToLoad= assm.GetType("WindowsApplication.Form1");
     是什么意思
    请zhzuo(秋枫)  大哥解释一下好吗