定义事件代码
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
package
{
import flash.events.Event;
public class MyEvent extends Event
{
public var name:String;
public var address:String;
public static const DATA_TRANSFER:String="data_transfer";
public function MyEvent( name:String, address:String)
{
super(DATA_TRANSFER)
this.name=name;
this.address=address;
}
override public function clone():Event
{
return new MyEvent(name, address);
}
}
}
定义自定义组件
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
<?xml version="1.0" encoding="utf-8"?>
<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml"
width="400"
height="300"
creationComplete="init();">
<mx:Script>
<![CDATA[
import MyEvent;
private function init():void
{
systemManager.addEventListener(MyEvent.DATA_TRANSFER, handleDataTransfer, true);
}
private function handleDataTransfer(evt:MyEvent):void
{
this.lblName.text=evt.name;
this.lblAddress.text=evt.address;
}
]]>
</mx:Script>
<mx:HBox>
<mx:Label text="Name: "/>
<mx:Label id="lblName"/>
</mx:HBox>
<mx:HBox>
<mx:Label text="Address: "/>
<mx:Label id="lblAddress"/>
</mx:HBox>
</mx:Panel>
主程序
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:comp="*">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import MyEvent;
[Bindable]
private var aCollection:ArrayCollection=new ArrayCollection([{name: "name1", address: "address1"}, {name: "name2", address: "address2"}, {name: "name3", address: "address3"}]);
private function changeHandler(evt:Event):void
{
var myEVT:MyEvent=new MyEvent(evt.currentTarget.selectedItem.name, evt.currentTarget.selectedItem.address);
this.dispatchEvent(myEVT);
}
]]>
</mx:Script>
<mx:DataGrid dataProvider="{aCollection}"
change="changeHandler(event)">
<mx:columns>
<mx:DataGridColumn dataField="name"
headerText="Name"/>
<mx:DataGridColumn dataField="address"
headerText="Address"/>
</mx:columns>
</mx:DataGrid>
<comp:MyPanel/>
</mx:Application>