前面有一篇名为“”的文章中说过采用事件机制进行主程序与子窗体之间参数传递的方法。下面再说一种方法,这种方法实现更为简单,访问也更灵活。
思路是在子窗口的定义中添加一个public的属性,类型为父窗体的类,在父窗体调用子窗体时对该属性赋值为自己,这样在子窗体中即可通过该属性访问父窗体了。
1、子窗体(SonWin)定义:
引申使用:该方法不仅可以用来实现子窗口与父窗口的互访,还可以用于父窗口向子窗口传递参数,只要在子窗口中定义任意类型的public属性,父窗口即可在创建子窗口时通过对该属性赋值实现对子窗口传递参数。
更为灵活的应用:回调函数
假设有父窗体P,在父窗体中弹出子窗体C,进行必要的操作后,返回父窗体,调用父窗体的刷新函数进行必要的显示信息更新。
思路是在子窗口的定义中添加一个public的属性,类型为父窗体的类,在父窗体调用子窗体时对该属性赋值为自己,这样在子窗体中即可通过该属性访问父窗体了。
1、子窗体(SonWin)定义:
<?xml
version="1.0" encoding="utf-8"?>
<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()" title="子窗口">
<mx:Label x="10" y="101"
id="Lbl1"/>
<mx:Script>
<![CDATA[
public var PareWin:FatherWin
//父窗口的引用
private function init():void {
//窗口初始化
Lbl1.text=PareWin.Title
}
]]>
</mx:Script>
</mx:Panel>
2、父窗体(FatherWin)调用子窗体的语句:<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()" title="子窗口">
</mx:Panel>
引申使用:该方法不仅可以用来实现子窗口与父窗口的互访,还可以用于父窗口向子窗口传递参数,只要在子窗口中定义任意类型的public属性,父窗口即可在创建子窗口时通过对该属性赋值实现对子窗口传递参数。
更为灵活的应用:回调函数
假设有父窗体P,在父窗体中弹出子窗体C,进行必要的操作后,返回父窗体,调用父窗体的刷新函数进行必要的显示信息更新。
1、弹出子窗体
var c:ChildForm = new ChildForm (); // 新建子窗体对象
PopUpManager.addPopUp(c, this, true); // 将子窗体加入PopUpManager中
c.studentId = ""; // 向子窗体传递参数
c.callbackFunction = this.refresh; // 子窗体中可以调用的父窗体函数(这里是子窗体关闭时,用来刷新父窗体的内容
PopUpManager.centerPopUp(c); // 子窗体弹出,居中
2、子窗体关闭时,调用父窗体
public var callbackFunction:Function; //回调函数
public var studentId:String = "";
public function doClose():void {
PopUpManager.removePopUp(this);
if (isUpdate) { callbackFunction.call(parent); // 调用父窗体的刷新函数
}
}
var c:ChildForm = new ChildForm (); // 新建子窗体对象
PopUpManager.addPopUp(c, this, true); // 将子窗体加入PopUpManager中
c.studentId = ""; // 向子窗体传递参数
c.callbackFunction = this.refresh; // 子窗体中可以调用的父窗体函数(这里是子窗体关闭时,用来刷新父窗体的内容
PopUpManager.centerPopUp(c); // 子窗体弹出,居中
2、子窗体关闭时,调用父窗体
public var callbackFunction:Function; //回调函数
public var studentId:String = "";
public function doClose():void {
if (isUpdate) { callbackFunction.call(parent); // 调用父窗体的刷新函数
}
已投稿到: |
|
---|