读书人

引用相同对象如何触发指定的引用对象的

发布时间: 2013-06-19 10:26:41 作者: rapoo

引用相同对象怎么触发指定的引用对象的事件,其它的忽略
事件类中的触发函数()的语句RaiseEvent 触发事件(),正常情况下
会依次触发,对象a和对象b和对象c的"触发事件类_触发事件函数"
如果我想只触发一个对象b的"触发事件类_触发事件函数",对象a和对象c
的忽略,应该怎么做



Class 事件类
Event 触发事件()

sub 触发函数()
RaiseEvent 触发事件()
end sub
End Class



Public Class 主窗口
Dim WithEvents 触发事件类 As New 事件类
Dim 对象a As New a(触发事件类)
Dim 对象b As New b(触发事件类)
Dim 对象c As New c(触发事件类)
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

End Sub




Class a
Dim WithEvents 触发事件类 As 事件类

Sub New(ByRef 对象 As Object)
触发事件类 = 对象
End Sub
'RaiseEvent 触发事件 会自动进入
Private Sub 触发事件类_触发事件() Handles 触发事件类.触发事件

End Sub
End Class

Class b
Dim WithEvents 触发事件类 As 事件类

Sub New(ByRef 对象 As Object)
触发事件类 = 对象
End Sub
'RaiseEvent 触发事件 会自动进入
Private Sub 触发事件类_触发事件() Handles 触发事件类.触发事件

End Sub
End Class

Class c
Dim WithEvents 触发事件类 As 事件类

Sub New(ByRef 对象 As Object)
触发事件类 = 对象
End Sub
'RaiseEvent 触发事件 会自动进入
Private Sub 触发事件类_触发事件() Handles 触发事件类.触发事件

End Sub
End Class 对象 事件
------解决方案--------------------


c#的你耐心点是能看懂的。

设计上让我写vb.net,我也感到很生疏呢。随便举个例子:

Public Class MyTestType

Public Event Hi As EventHandler

Sub test()
If Not (HiEvent Is Nothing) Then
For Each v As EventHandler In HiEvent.GetInvocationList()
If v.Method.DeclaringType = GetType(b) Then
v(Me, EventArgs.Empty)
End If
Next
End If

End Sub

End Class

这里,因为类型 MyTestType 定义了事件 Hi,所以它触发时可以不简单地写 Hi(....) 而是在一个 ForEach 循环中去挑类型 b 的委托才去调用,其它的就扔掉了。

读书人网 >VB Dotnet

热点推荐