mdi父窗体如何向子窗体发送数据

Q:

mdi父窗体如何向子窗体发送数据,一般都有哪些方式?

A:

对于最通常的MDI窗口, WinForm在Form 类的属性中提供了Form.MdiChildren这个属性来返回所有的子窗口.

这样我们只要继承Form类, 然后使用这个类来新建子窗口.
public class MyChildForm : Form
{
}

然后, 通过MdiChildren属性来获取子窗口, 调用子窗口类中定义的公共方法, 或者公共属性来传送数据即可.

第二种方法, 我们还可以在MDI parent form中定义一个Event. 然后, 在自定义的子窗口中定义这个Event 的handler. 这样, 每次MDI parent Form只要抛出这个事件, 每个子窗口即可获得更新.

第三种方法, 简历一个全局变量, 然后让MDI parent 窗口来赋值, 子窗口再来查询即可. 我们可以在子Form种使用Timer来定期获取Form中的数据.

mdi父窗体如何向子窗体发送数据,布布扣,bubuko.com

时间: 2024-12-16 05:33:21

mdi父窗体如何向子窗体发送数据的相关文章

主窗体里面打开子窗体&&打印饼图《Delphi 6数据库开发典型实例》--图表的绘制

\Delphi 6数据库开发典型实例\图表的绘制 1.在主窗体里面打开子窗体:ShowForm(Tfrm_Print); procedure Tfrm_Main.ShowForm(AFormClass:TFormClass);begin with AFormClass.Create(Self) do try ShowModal;  // 阻塞或者模态窗口,只有你把当前窗口关闭后,才能去操作父亲窗口. finally Free; end;end; //这个例子打开有异常,提示单元chart 引用本

12.父组件主动获取子组件的数据和方法

父组件主动获取子组件的数据和方法 1.父组件Home.vue <template> <div> <h2>{{msg}}</h2> <!-- 1.调用子组件的时候调用一个ref --> <!-- 2.在父组件中通过this.$refs.header.数据 this.$refs.header.方法 调用子组件的数据和方法 --> <!-- 注意,第一步是ref,第二步是refs --> <v-header ref=&qu

WinForm MDi子窗体最大化导致子窗体标题栏和主窗体菜单栏合并问题的解决方法

在主窗体菜单栏的ItemAdded事件中编写如下代码: *msMain是我的主窗体菜单栏的Name属性值 //子窗体最大化不显示图标 private void msMain_ItemAdded(object sender, ToolStripItemEventArgs e) { if (e.Item.Text.Length == 0) { e.Item.Visible = false; } else { e.Item.Visible = true; } } 说明: 打开的子窗体最大化的时候,菜单

js父窗体关闭,子窗体紧随

近来的.我们遇到了权限管理系统.由于权限管理系统与原系统的风格不符.打开一个全新的窗口.问题就来了.admin取消后,,权限管理形式不关闭.其他普通用户登录后.尚能经营权的管理形式. 简化问题:admin时候,或者main.html关闭的时候,打开的全部新窗体一起关闭.问题就攻克了 直接看代码吧: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/ht

【VC】Dialog 窗体随意切割子窗体。

用 Dialog 对话框来实现窗体的随意切割. 在资源中加入  Dialog 选择  IDD_FORMVIEW 资源..分别新建FormViewOne,FormViewTwo FormViewThree 类,分别继承基类 CFormView. class CMyFormViewOne : public CFormView { DECLARE_DYNCREATE(CMyFormViewOne) protected: CMyFormViewOne(); // 动态创建所使用的受保护的构造函数 vir

C#如何操作另一个窗体:[2]子窗体操作主窗体(转)

首先我们新建一个项目   在项目管理器中,我们右击,选择"添加",选择"windows窗体"   输入窗体名,点击"确定"   我们给form1拖入按钮控件   在项目管理器中,我们找到"Form1.Designer.cs",双击打开代码窗口   我们找到按钮的定义,然后把private改为public   我们回到窗体1,把以下代码填入代码窗品中 Form2 a = new Form2(); a.Show(this); 这个

浅谈VUE,使用watch方法监听父组件传到子组件的数据。

props:['updateData'], data(){ return{ form: { _name:'', }, } }, 第一步接收数据: props:['updateData'] 第二步动态改变值: mounted(){ this.form._name = this.updateData._name; }, 第三步使用watch监听 updateData数据 watch:{ updateData: function (newVal ,oldVal){ //不能用箭头函数 this.for

【C#】MDI窗体中,将子窗体置于父窗体控件之上的方法

问题 解决办法 user32dll SystemRuntimeInteropServices 代码 总结 问题 这几天在优化程序的时候发现了一个问题,就是在MDI窗体中的子窗体被激活显示出来之后,总是被主窗体中的控件遮挡(各种控件).解决的方法也试了很多但是都不是很满意,由于C#的WINFROM窗体没有SETPARENT的方法,所以很多东西都需要自己去编写,下面就贴一个至少让我感觉非常不错的方法吧. 解决办法 user32.dll user32.dll是Windows用户界面相关应用程序接口,用

Delphi MDI程序 父窗体如何调用当前活动子窗体的函数/过程

一个MDI文本文件编辑器打开了N个子窗体子窗体的.pas文件有一些public的过程和函数我想在父窗体调用当前活动的子窗体函数我用Self.ActiveChildForm无法调用直接frmEdit.xxxx运行出错求大家指导,谢谢! 回复于: 2013-01-21 15:31:31 将子窗口的函数定义为类函数calss function a(const s: string): Boolean; 有两种解决办法,一种就是上楼说的,定义成class function静态方法,第二种就是普通的方法:D