Flex中利用事件机制进行主程序与子窗体间参数传递
2020-11-20 22:08
标签:blog class tar ext get http 在开发具有子窗体,或者itemrenderer的应用时,常常涉及到子窗体向父窗体传递参数或者从itemrenderer内的控件向外部的主程序传递参数的需求。这些都可以通过事件机制这一统一方法加以解决。
1、左侧的List控件的itemrenderer中包含CheckBox控件,当其状态改变时需要同时改变主程序中的一个数组变量的内容; 这两个需求我都通过事件机制来解决,具体方法如下:
2、List控件的代码如下: 4、主程序中定义事件处理函数:
对于第二个需求,也是同样的原理,只不过主程序中侦听器的定义不是在程序初始化时,而是弹出窗口建立时,在子窗口关闭时触发事件,在主程序中侦听事件并作相应操作: 3、主程序中定义事件侦听器: 转载自: http://blog.sina.com.cn/s/blog_4d65c19e0100gwuv.html Flex中利用事件机制进行主程序与子窗体间参数传递,搜素材,soscw.com Flex中利用事件机制进行主程序与子窗体间参数传递 标签:blog class tar ext get http 原文地址:http://www.cnblogs.com/xxjudfc/p/3709895.html
在我的应用中有两个需求:
2、左下方的“新增届次”按钮会弹出一个窗口,窗口中输入届次信息后需要修改数据库中的表,同时表的更改结果要能够在List控件中体现出来。
第一个需求:
1、首先新建一个事件类:
import
flash.events.Event;
public class ListItemChangeEvent
extends Event{
public var
Jieci:Object;//用来传递参数的类属性
public
function ListItemChangeEvent(type:String,
Jieci:Object=null,
bubbles:Boolean=false,
cancelable:Boolean=false)
{
this.Jieci=Jieci;
super(type,
bubbles,
cancelable);
}
}
}
import
com.RenDa.event.ListItemChangeEvent;
private
function onChange(evt:Event):void
{
var
JieciObj:Object=new
Object
JieciObj.jie=data.Jie
JieciObj.ci=data.Ci
//触发自定义事件,因为事件处理程序在主窗体中,所以evt的第三个参数即bubbles设置为TRUE,表示冒泡到主程序层
var
evtChange:ListItemChangeEvent=new
ListItemChangeEvent("List_Item_Changed",JieciObj,true);
this.dispatchEvent(evtChange);
}
]]>
3、主程序的初始化函数中定义时间侦听器:
JieciList.addEventListener("List_Item_Changed",ListItemChangeHandler);
}
//需要执行的代码放在这里
}
1、定义事件类:
package
com.RenDa.event{
import
flash.events.Event;
//子窗体关闭事件
public
class WindowCloseEvent extends
Event{
public
function WindowCloseEvent(type:String, bubbles:Boolean=false,
cancelable:Boolean=false){
super(type,
bubbles,
cancelable);
}
}
}
2、子窗体中在关闭子窗体之前触发事件:
this.dispatchEvent(evtClose);
PopUpManager.removePopUp(this)//关闭子窗体
private function
NewJieciBtnClickHandler(evt:MouseEvent):void{//弹出子窗按钮
var
popNewJieci:
NewJieciWin=NewJieciWin(PopUpManager.createPopUp(this,NewJieciWin,true));
//弹出对话框居中
PopUpManager.centerPopUp(popNewJieci);
//定义事件侦听器
popNewJieci.addEventListener("Sub_Window_Closed",NewJieciWinCloseHandler);
}
4、主程序中的事件处理函数:
private
function
NewJieciWinCloseHandler(evt:WindowCloseEvent):void{
//需要执行的代码放在这里
}