Raise your own event : RaiseEvent « Event « VB.Net Tutorial






Option Strict On

Public Class Tester
   Dim WithEvents Shared acct As Account

   Public Shared Sub Main()
      Dim warning As MyEventHander = AddressOf Display

      Dim bal As Decimal
      acct = New Account(200.00d)
      
      bal = acct.Deposit(0.00d)

      bal = acct.Debit(400.00d)

      bal = acct.Debit(5000.00d)


   End Sub

   Friend Shared Sub Display(sender As Object,e As MyEventArgs)
      Console.WriteLine("Warning: The balance of {0} has fallen below {1}.", _
                        e.balance, e.WarningLevel)
   End Sub
End Class



Public Class MyEventArgs : Inherits EventArgs
   Private level As Decimal
   Private current As Decimal

   Public Sub New(warningLevel As Decimal, currentBalance As Decimal)
      Me.level = warningLevel
      Me.current = currentBalance
   End Sub

   Public ReadOnly Property WarningLevel As Decimal
      Get
         Return level
      End Get
   End Property

   Public ReadOnly Property Balance As Decimal
      Get
         Return current
      End Get
   End Property
End Class

Public Delegate Sub MyEventHander(sender As Object, _
                                      e As MyEventArgs)

Public Class Account
   Private warningLevel As Decimal
   Private balance As Decimal

   Public Event MyEvent As MyEventHander
   
   Public Sub New(warningLevel As Decimal)
      Me.warningLevel = warningLevel
   End Sub

   Public Function Deposit(amount As Decimal) As Decimal
      balance += amount

      RaiseEvent MyEvent(Me, _
                    New MyEventArgs(warningLevel, balance))
      Return balance
   End Function

   Public Function Debit(amount As Decimal) As Decimal
      balance -= amount

      RaiseEvent MyEvent(Me, _
                    New MyEventArgs(warningLevel, balance))
      Console.WriteLine("raised")
      Return balance
   End Function
End Class
raised
raised








11.4.RaiseEvent
11.4.1.Raise your own event
11.4.2.Define your own Event and raise it