首页 > 其他 > 详细

事件与委托

时间:2017-02-09 15:35:05      阅读:215      评论:0      收藏:0      [点我收藏+]

参考文章: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

 

事件与委托

原文:http://www.cnblogs.com/bob-bao/p/6382185.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!