2013年3月26日 星期二

[學習] 事件(Event)的設計

可以讓重複出現的事情
讓已預定好的事件去執行

未事件前:

Public Class aaa
    Private _a As Integer = 0

    Public Property a() As Integer
        Get
            Return _a
        End Get
        Set(ByVal value As Integer)
            _a = value
        End Set
    End Property
End Class

Module Module1
    Dim  b As New aaa

    Sub Main()
        b.a = 1
        MsgBox(b.a)  '沒丟給事件處理時, 就必須Coding時寫N次 msgbox 
        b.a = 2
        MsgBox(b.a)
        Console.Read()
    End Sub
End Module


事件後:

Public Class aaa
    Event idxchg()  '宣告事件
    Private _a As Integer = 0

    Public Property a() As Integer
        Get
            Return _a
        End Get
        Set(ByVal value As Integer)
            _a = value
            RaiseEvent idxchg()  '觸發事件
        End Set
    End Property
End Class

Module Module1
    Dim WithEvents b As New aaa  '宣告帶有事件處理的物件

    Private Sub idxchg() Handles b.idxchg  '事件觸發時,要做的事情
        MsgBox(b.a)  '由事件來處理, 不須Coding時寫N次的msgbox
    End Sub

    Sub Main()
        b.a = 1
        b.a = 2
        Console.Read()
    End Sub
End Module

參考:
(200-06-28) VB.NET 委派(Delegate) 事件(Event)
DataGridView中如何在textbox列中限制输入。
事件教學課程
事件 (C# 程式設計手冊)
event (C# 參考)
事件 (Visual Basic)
AddHandler 陳述式
事件的深入分析(function pointer, delegate, event, EventHandler)

玩轉C#之【委派和事件】
C# 中的委托和事件(转载)
.NET 事件與委派詳論
C# Delegate and Event 委派和事件(一)

沒有留言:

張貼留言