2

我对 VB.NET 中的事件基础有疑问。我想要一个静态类,但在 VB.NET 中它不存在,等效的是Module. 所以我有一个模块,里面有一些属性(当然是静态的)。例子:

Public Module MyModule

   Private _value As Integer
   Public Event ValueChanged()

   Public Property Value() As Integer
      Get
         Return _value
      End Get
      Set(ByVal value As Integer)
         _value = value
         RaiseEvent ValueChanged()
      End Set
   End Property

End Module

在我的情况下,我想处理 changed _value。这段代码应该没问题。但是如果我想在另一个类中处理它:

Public Class MyClass

   Public Sub Method_ValueChanged() Handles MyModule.ValueChaged
        'Do something...
   End Sub

End Class

这是一个问题,因为 MyModule 必须声明为WithEvents但 MyModule 是静态的,所以不能这样做。你能告诉我如何处理另一个类的静态类事件吗?谢谢你。

4

1 回答 1

3

你必须使用AddHandler.

例子:

Module A
    Private _value As Integer
    Public Event ValueChanged()

    Public Property Value() As Integer
    Get
        Return _value
    End Get
    Set(ByVal value As Integer)
        _value = value
        RaiseEvent ValueChanged()
    End Set
    End Property
End Module

Module B
    Sub Main
        AddHandler ValueChanged, AddressOf Method_ValueChanged
        A.Value = 12
    End Sub

    Public Sub Method_ValueChanged()
        Console.WriteLine("Changed!")
    End Sub
End Module

运行这将打印Changed!.

于 2013-10-24T08:59:09.867 回答