问题描述
单击树节点在父窗体中打开了几个子窗体,如何做到我选中节点后打开对应的子窗体???-节点0---A---B---C选中节点A,弹出FORM1选中节点B,弹出FORM2选中节点C,弹出FORM3我的代码如下,但是只能打开同一下窗体,如何实现点击不同节点后显示相应的窗体呢privatevoidtrwFuncFrame_AfterSelect_1(objectsender,TreeViewEventArgse){System.Stringstr=trwFuncFrame.SelectedNode.Text;//取得相应treeview结点的text值boolremark=true;for(inti=0;i<this.MdiChildren.Length;i++)if(this.MdiChildren[i].Name.Equals(str))//查看有没有相同的MDI子窗体{this.MdiChildren[i].Activate();//子窗体已经被创立,激活它remark=false;break;}if(remark)//末创立,建立子窗体{MyForm.frmDBConnecttemp_form=newMyForm.frmDBConnect();temp_form.MdiParent=this;temp_form.OnFormMinSize+=newMyForm.frmDBConnect.FormMinSize(form_OnFormMinSize);temp_form.Name=str;temp_form.Text=str;temp_form.Show();}}
解决方案
解决方案二:
这样改——if(remark)//末创立,建立子窗体{stringss="Form";Type[]ts=Assembly.GetExecutingAssembly().GetTypes();for(inti=0;i<ts.Length;i++){if(ts[i].Name==str){ss=ts[i].FullName;}}Formtemp_form=(Form)(Assembly.GetExecutingAssembly().CreateInstance(ss));if(temp_form!=null){temp_form.MdiParent=this;temp_form.Name=str;temp_form.Text=str;temp_form.Show();}}
解决方案三:
不知道我理解的对不对;就是双击节点A,弹出FomrA;双击节点B,弹出FomrB;以下是我的代码,分很少就只给你个实现的代码,方法不太好,还有点Bug,应该用抽象工厂做,不过这样也可以达到你的要求了应该。usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;namespaceWindowsApplication2{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}privatevoidtreeView1_NodeMouseDoubleClick(objectsender,TreeNodeMouseClickEventArgse){Formfr=null;if(e.Node.Name=="节点A"){fr=newFormA();}elseif(e.Node.Name=="节点B"){fr=newFormB();}else{fr=newFormC();}fr.Show();}}}
解决方案四:
哦对了,用反射是最好的,抽象工厂,和反射,以后有了变化也好维护
解决方案五:
楼主你的代码是正确的