事件与委托
Posted 墨尔本
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了事件与委托相关的知识,希望对你有一定的参考价值。
参考文章:http://blog.csdn.net/wufeng4552/article/details/6261779
代码实现以下功能:主人回来了,猫叫了一声,老鼠被吓跑了同事吵醒了小孩。
以下是类图:
以下是实现代码:
\'\'\' <summary> \'\'\' 主人 \'\'\' </summary> \'\'\' <remarks></remarks> Public Class Master \'\'\' <summary> \'\'\' 主人到家事件 \'\'\' </summary> \'\'\' <remarks></remarks> Public Event ReachHomeEvent As ReachHomeEventHandler \'\'\' <summary> \'\'\' 主人回家过程 \'\'\' </summary> \'\'\' <remarks></remarks> Public Sub BackHome() Walk() RaiseEvent ReachHomeEvent(Me) End Sub \'\'\' <summary> \'\'\' 步行 \'\'\' </summary> \'\'\' <remarks></remarks> Public Sub Walk() Console.WriteLine("步行回家") Threading.Thread.Sleep(800) End Sub End Class Public Delegate Sub ReachHomeEventHandler(ByVal sender As Object)
\'\'\' <summary> \'\'\' 猫 \'\'\' </summary> \'\'\' <remarks></remarks> Public Class Cat \'\'\' <summary> \'\'\' 猫叫 \'\'\' Master.ReachHomeEvent事件的事件处理程序 \'\'\' </summary> \'\'\' <remarks></remarks> Public Sub Mao(ByVal sender As Object) Console.WriteLine("Miao") RaiseEvent MaoEvent(Me, New EventArgs()) End Sub \'\'\' <summary> \'\'\' 猫叫事件 \'\'\' </summary> \'\'\' <remarks></remarks> Public Event MaoEvent As EventHandler End Class
Public Class Mouse Public Sub Escape(ByVal sender As Object, ByVal e As EventArgs) Console.WriteLine("猫来了,赶紧跑!") End Sub End Class
Public Class Children \'\'\' <summary> \'\'\' 小孩哭 \'\'\' Master.ReachHomeEvent的事件处理程序 \'\'\' </summary> \'\'\' <remarks></remarks> Public Sub Cry() Console.WriteLine("呜呜呜") End Sub \'\'\' <summary> \'\'\' 小孩醒来 \'\'\' </summary> \'\'\' <param name="sender"></param> \'\'\' <param name="e"></param> \'\'\' <remarks></remarks> Public Sub WakeUp(ByVal sender As Object, ByVal e As EventArgs) Cry() End Sub End Class
Module Module1 Private WithEvents _master As Master Private WithEvents _cat As Cat Private WithEvents _child As Children Sub Main() Dim _mouse As Mouse _master = New Master() _cat = New Cat() _child = New Children() _mouse = New Mouse() \'_cat监视_master AddHandler _master.ReachHomeEvent, AddressOf _cat.Mao \'_mouse监视_cat AddHandler _cat.MaoEvent, AddressOf _mouse.Escape \'_child监视_cat AddHandler _cat.MaoEvent, AddressOf _child.WakeUp _master.BackHome() Console.ReadKey() End Sub End Module
以上是关于事件与委托的主要内容,如果未能解决你的问题,请参考以下文章