sytn.net
当前位置:首页 >> C#中MDI程序怎么获得当前激活的子窗体 >>

C#中MDI程序怎么获得当前激活的子窗体

主窗体有个属性叫做activeform,通过这个可以定位到最前端的子窗体,也就是活动窗体或者叫做激活窗体.

仅供参考:首先在主程序里找一个类名叫MDIClient的窗体,这个是所有MDI窗体的容器.然后再以这个句柄为父句柄,找下面的MDI子窗体,可用FindWindowEx

Form.MdiChildActivate 在多文档界面 (MDI) 应用程序内激活或关闭 MDI 子窗体时发生 在这个事件发生时①如果是激活会新建一个菜单项,名字叫窗体名字,并且添加一个点击事件,为了方便可以将Tag设为子窗体.如果是已有的窗体就给菜单项打上勾②如果是关闭则移除与之对应的菜单项当菜单项的点击事件发生时使用菜单项里的Tag操纵Form,比如Form.Focos();可以使此窗体获得焦点,也就是前置还有一个更简单的方法,在项目里新建“MDI窗体”,然后改改,“窗体”菜单那一栏不动就行

无论该窗口是否激活,都更新不就可以了?通过委托线程刷新.

将fmMain换成this.ParentForm;OK!

先在主窗体中设置(isMdicontainer为true)范例:给主窗体中拉进一个botton;双击(写代码)如下: Form2 myForm2 = new Form2(); myForm2.MdiParent = this; myForm2.Show();myForm2是实例化子窗体的对象嘿嘿 希望你看了以后能明白我在给你说时已经在我机子上做过,能实现

'form2代码Private Sub Form_Activate()Me.Tag = "我是当前窗体" '可以改成任何内容,空格都行,只要求有内容就行End SubPrivate Sub Form_Deactivate()Me.Tag =

方法较多,比如: 子窗体: private datagridview parent_dgv = null; public 子窗体(datagridview dgv) { init();// 不好意思,这个初始化的单词忘记怎么拼了.. parent_dgv = dgv; } 然后在子窗体直接操作parent_dgv即可. 对于父窗体,显示这个子窗体的时候改为: 子窗体 frm = new 子窗体(this.datagridview1); frm.show();

private void Button_Click() //按钮的单击事件 { foreach(Form frm in this.MdiParent.MdiChildren) //this.MdiParent.MdiChildren就是和自己在同一个MDI父级的子窗体集合 { if(frm.GetType()==typeof(Form3)) { frm.Text="123"; //这里换成需要的方法 break; } } Form3 child=new Form3(); //如果执行到这里还没有退出,则说明Form3没有被载入 child.Show(); child.Text="123"; //这里换成需要的方法 }

查看窗口焦点.

网站首页 | 网站地图
All rights reserved Powered by www.sytn.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com