单击树节点在父窗体中打开了几个子窗体,如何做到我选中节点后打开对应的子窗体???

问题描述

单击树节点在父窗体中打开了几个子窗体,如何做到我选中节点后打开对应的子窗体???-节点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();}}}
解决方案四:
哦对了,用反射是最好的,抽象工厂,和反射,以后有了变化也好维护
解决方案五:
楼主你的代码是正确的

时间: 2024-10-01 09:49:19

单击树节点在父窗体中打开了几个子窗体,如何做到我选中节点后打开对应的子窗体???的相关文章

父窗体跟子窗体之间的数据同步

问题描述 如题,父窗体跟子窗体完全一样,然后在父窗体选中checkbox选项,要求在子窗体也能够同步显示checkbox被选中 解决方案 解决方案二:做个自定义事件即可,可以是公共的,父子都能访问的一个委托,勾选时触发这个时间,接受者就可以接收到了,这样父子可以互相影响解决方案三:引用楼主qq_16714021的回复: 如题,父窗体跟子窗体完全一样,然后在父窗体选中checkbox选项,要求在子窗体也能够同步显示checkbox被选中 子窗体选中了父窗体也要选中么?解决方案四:事件,如果是wpf

如何在MDI子窗体中使用TransparencyKey属性

问题描述 如何在MDI子窗体中使用TransparencyKey属性如果窗体不是MDI子窗体,则可以通过设置TransparencyKey属性使得窗体透明.但如果窗体时MDI子窗体,这个属性就无效了.请教有什么办法使得MDI子窗体透明或其TransparencyKey属性生效. 解决方案 解决方案二: 解决方案三:感觉是来踢馆的解决方案四:是不可以的,让MDI子窗体再穿透MDI主窗体实在有点为难windows了不知为何一定要MDI呢?解决方案五:引用3楼xuzuning的回复: 是不可以的,让M

子窗体关闭父窗体刷新-关于子窗体关闭同时刷新父窗体的问题

问题描述 关于子窗体关闭同时刷新父窗体的问题 亲,是这样的,我现在在实习,最近在练习做一个C#连接Oracle然后对数据库进行增删改查的小程序,有一个问题,我简单说一下,就是我的父窗体有个dgv来显示数据库数据,然后有个增加数据Button点一下,出现子窗体,然后子窗体上有姓名,号码输入框,还有一个确定输入键.我想实现按一下确定输入键输入键,然后子窗体自动关闭,父窗体的dgv内容自动刷新,我百度了个方法,很管用,是这样的.//你在主窗体调用子窗体事件里面写: 子窗体f = new 子窗体();

jsp 网站开发-jsp子窗体向父窗体传值

问题描述 jsp子窗体向父窗体传值 function returninfo() { alert("Hello !!"); //获取用户输入的部门信息 var depinfo=document.myform.dep.value; //关键步骤.取得父窗体的document对象 alert(depinfo); <!---->var doc=window.opener.document;// 加上这段代码.子窗体就关闭不了.不加子窗体就能关闭. //将取得的信息赋值给上个页面的接

vb.net 防止MDI子窗体被多次实例化的四种方法

方法一            可能没有什么实用性,只适合简单项目:       Dim frmTmp As ClassForm        "实现已经设计好了一个称作(类名为)ClassForm的表单              frmTmp = New ClassForm          "在此定义它的一个实例         frmTmp.ShowDialog()                "作为模式窗体显示这样在当前窗体没有关闭以前,其他form上的菜单按钮都不可

为什么单击TreeView中的子节点显示的子窗体在当前窗体的后面呀?

问题描述 为什么单击TreeView中的子节点显示的子窗体在当前窗体的后面呀? 解决方案 解决方案二:该回复于2009-06-18 17:18:58被版主删除

C#Windows窗体应用程序中如何在父窗体里关闭所有打开的子窗体

问题描述 就是有一个父窗体,打开了3个子窗体,在主菜单里有个窗体按钮,点击可以关闭当前打开的所有子窗体,哪位大仙帮帮忙 解决方案 解决方案二:http://blog.csdn.net/bdstjk/article/details/7007882解决方案三: 解决方案四:我做的是父窗体,而且我的问题跟你给的链接里的内容也没关系

vb.net向父窗体传值-在vb.net中,子窗体如何向父窗体传值

问题描述 在vb.net中,子窗体如何向父窗体传值 多个窗体的变量对应的是多个SQL的视图(每个窗体变量数不同),当主窗体打开后OPC连接,打开子窗体(只能打开一个窗体),子窗体中_Load下读取的SQL视图变量名并读入一数组a(n)(全局变量)中,子窗体打开后,主窗体将a(n)读入b(n),并依据这些变量名寻找对应WINCC中的值.可是我的主窗体中应把判定子窗体是否打开的脚本写在什么事件下好呢,同时,我的OPC连接是不是也不能写在Form_Load下了,求高手指点. 解决方案 [VB.NET]

父窗全能使用-弹出子窗体后,要求父窗体能继续使用,并且打开其它程序时能够复盖子窗体,不知道哪位大神有好办法!

问题描述 弹出子窗体后,要求父窗体能继续使用,并且打开其它程序时能够复盖子窗体,不知道哪位大神有好办法! 解决方案 思路: 1.将弹出窗体去掉 2.将扩展字段的页面写在当前页面panel中,点击隐藏显示panel