首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

引用相同对象如何触发指定的引用对象的事件,其它的忽略

2013-06-19 
引用相同对象怎么触发指定的引用对象的事件,其它的忽略事件类中的触发函数()的语句RaiseEvent 触发事件(),

引用相同对象怎么触发指定的引用对象的事件,其它的忽略
事件类中的触发函数()的语句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 的委托才去调用,其它的就扔掉了。

热点排行