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

私の状況では、変更を処理したいと考えてい_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 に答える