private sub lvwlist_afterlabeledit(byval sender as _ object, byval e as _ system.windows.forms.labelediteventargs) _ handles lvwlist.afterlabeledit dim objevent as clsdataevent if e.label <> "" then objevent = new clsdataevent() with objevent .name = "namechanged" .value = e.label .extradata = lvwlist.items(e.item).tag .origin = me end with mybase.eventchannel.publishevent(objevent) end if end sub 發(fā)送事件的窗體證實它是事件的創(chuàng)始人;并將clsdataevent類的origin屬性設置為它自己。這樣可以阻擋其他多余的事件,以確保發(fā)送者接收到的事件都是已經(jīng)發(fā)布過的。最后,事件的發(fā)布者注意到了數(shù)據(jù)的改變。
public overrides sub eventraise( _ byval newevent as _ eventapp.clsevent) dim objlistitem as listviewitem
select case newevent.name case "namechanged" for each objlistitem in lvwlist.items if objlistitem.tag = newevent.extradata then objlistitem.text = newevent.value end if next case else 'handle other events end select end sub