Mega Code Archive

 
Categories / VB.Net Tutorial / Event
 

Static and Dynamic Events

public class ValueEventArgs :  Inherits EventArgs    Private oldTemp As Decimal    Private newTemp As Decimal    Public ReadOnly Property OldValue As Decimal       Get          Return Me.oldTemp       End Get       End Property    Public ReadOnly Property NewValue As Decimal       Get          Return Me.newTemp       End Get    End Property    Public Sub New(oldTemp As Decimal, newTemp As Decimal)       Me.oldTemp = oldTemp       Me.newTemp = newTemp       End Sub End Class Public Delegate Sub ValueEventHandler(sender As Object,ev As ValueEventArgs) Public Class ValueMonitor    Private currentValue As Decimal    Private threshholdValue As Decimal    Public Event ValueThreshold As ValueEventHandler     Public Sub New(threshHold As Decimal)       Me.threshholdValue = threshHold    End Sub    Public Sub SetValue(newValue As Decimal)       If (Me.currentValue > threshholdValue And _          newValue <= Me.threshholdValue) Or _          (Me.CurrentValue < Me.threshholdValue And _              newValue >= Me.threshholdValue) Then          OnRaiseValueEvent(newValue)       End If       Me.currentValue = newValue    End Sub    Public Function GetValue() As Decimal       Return Me.currentValue    End Function    Protected Overridable Sub OnRaiseValueEvent(newValue As Decimal)       RaiseEvent ValueThreshold(Me, New ValueEventArgs(Me.currentValue, _                                         newValue))    End Sub                                        End Class Public Module Example    Public Sub Main()       Dim tempMon As New ValueMonitor(32d)       tempMon.SetValue(31)       Console.WriteLine("Current temperature is {0} degrees Fahrenheit.",tempMon.GetValue())       AddHandler tempMon.ValueThreshold, AddressOf TempMonitor       tempMon.SetValue(33)       Console.WriteLine("Current temperature is {0} degrees Fahrenheit.",tempMon.GetValue())       RemoveHandler tempMon.ValueThreshold, AddressOf TempMonitor       tempMon.SetValue(31)       Console.WriteLine("Current temperature is {0} degrees Fahrenheit.",tempMon.GetValue())    End Sub    Private Sub TempMonitor(sender As Object, e As ValueEventArgs)       Console.WriteLine("Value is changing from {0} to {1}.",e.OldValue, e.NewValue)    End Sub  End Module