vb.net 自定义事件在实际编程应用中,可以摆脱系统事件的束缚和限制,如果能灵活的运用,可以尽情发挥。
事件申明如下:
event event_name(parameterlist)
在事件所在的类里还得必须声明一个过程来触发事件
sub execute_envet
raiseevent event_name
end sub
在定义事件之后,还得为事件指定相应的事件过程,否则,就没有任何意义了,事件过程的参数列表必须得和事件的参数列表的完全匹配
事件和事件过程怎样关联呢?
有以下两种方式:
addhandler和handles
addhandler 比较灵活,可以根据自己的需要在动态的指定事件的事件过程。
addhandler event_name,addressof event_sub
handles是标准方式。但缺乏灵活性
在使用handles 为事件处理程序制定事件时,必须要withevents 声明事件对象。
下面用代码来说明:
//事件类
class event_class
event test_event()
sub execute_event()
rasiseevent test_event()
end sub
end class
使用addhandler 关联
class test_addhandler
dim e_c as new event_class
// 事件处理过程
sub event_sub()
msgBox("Addhandler test")
end sub
sub s_1
addhanlder e_c.test_event,addressof event_sub
e_c.execute_event()
RemoveHandler e_c.test_event,addressof event_sub
end sub
sub event_sub1()
msgBox("Addhandler test1")
end sub
sub s_2
addhanlder e_c.test_event,addressof event_sub1
e_c.execute_event()
end sub
end class
使用handler关联
class test_handler
dim withevents e_c as new event_class
// 事件处理过程
sub event_sub() handles e_c.test_event
msgBox("handles test")
end sub
sub s_1
e_c.execute_evnet()
end sub
end class