三个窗体之间互传数据

来源:互联网 发布:淘宝生活用品 编辑:程序博客网 时间:2024/06/15 23:02

目前开发项目中有如下需求:

A窗体的某个事件打开B窗体,B窗体的某个事件打开C窗体,现在在C窗体上的操作,需要将某个数据传递给A窗体,比如C窗体的MouseMove事件的坐标e.X,现在将其传给A窗体,如何操作呢?

一、首先,如果没有A窗体,需求为e.X传给B窗体,则关键代码如下:

C窗体中定义,委托和事件:

public delegate void OnMousePositionMoveDel(int X);

public OnMousePositionMoveDel OnMousePositionMoveEvent;

在C窗体的MouseMove事件中,触发该事件,并传递参数:OnMousePositionMoveEvent(e.X);

B窗体实例化C窗体的地方挂载C窗体事件:CForm frm=new CForm();

frm.OnMousePositionMoveEvent+=MouseMoveMethod;

B窗体中定义接受C窗体事件参数的方法private void MouseMoveMethod(int X)

{

//到此,C窗体的参数e.X已经通过参数X传递过来

二、现在设计到三个窗体,我的做法是

1、在B窗体中定义与C窗体类似的委托和事件:

 

public delegate void OnMousePositionMoveDel2(int X);

public OnMousePositionMoveDel2 OnMousePositionMoveEvent2;

 

2、B窗体实例化C窗体的地方挂载C窗体事件:CForm frm=new CForm();

frm.OnMousePositionMoveEvent+=MouseMoveMethod;

B窗体中定义接受C窗体事件参数的方法private void MouseMoveMethod(int X)

{

 

//这里继续触发事件,以便传给窗体A  

OnMousePositionMoveEvent2(X);

 

3、A窗体实例化B窗体的地方挂载B窗体事件:BForm frm=new CForm();

frm.OnMousePositionMoveEvent2+=MouseMoveMethod;

A窗体中定义接受C窗体事件参数的方法private void MouseMoveMethod(int X)

{

//到此,C窗体的参数e.X已经通过参数X传递过来,其实是通过B窗体,再传递给A窗体的

三、不知道这种做法是否合适?或者是否为最佳实践,请大家赐教!

 

 

原创粉丝点击