Bei Änderung von Variablenwerten einen Event auslösen

Hier erfahren Sie, wie Sie ein Ereignis auslösen können, wenn eine einfache Variable z.B. vom Typ Integer oder String, einen anderen Wert erhält.

Für Objekte im .NET können Sie bei der Deklaration das Attribut „withEvents“ mitgeben, dann haben Sie alle Ereignisse (Events) des Objekts zur Verfügung und können das mitnutzen:

private withEvents myItem as myControl

Alle Events, die dann in myControl mit public deklariert sind (und die ererbten) stehen Ihnen damit zur Nutzung bereit.
Anders sieht es bei einfachen Variablen aus.

private withEvents myInteger as Integer

wird scheitern, da „Integer“ in diesem Sinne keine Events kennt. Ein kleiner Trick kann Abhilfe schaffen.
Definieren Sie einen eigenen Event und lösen Sie ihn durch Ummanteln der Variable in einem Property aus!

Zunächst die Eventdeklaration:

Public Event MyVariableIntegerChanged

Deklarieren Sie die Property:

Property ThisInteger as Integer
Get
  Return myInteger
End Get
Set (ByVal value as Integer)
 myInteger = value
 RaiseEvent MyVariableIntegerChanged
End Set

Jetzt achten Sie darauf, die Variable nicht direkt sondern über das Property zu ändern, schon haben Sie das gewünschte Ergebnis:

Public Sub New()
    ThisInteger = 1 'belegt den Wert der Variablen myInteger mit 1 und löst den Event MyVariableIntegerChanged aus
End Sub

Das ganze in einer Klasse:

Public Class VariablenEventTest
 Dim myInteger as Integer
Public Event MyVariableIntegerChanged
Property ThisInteger as Integer
Get
  Return myInteger
End Get
Set (ByVal value as Integer)
 myInteger = value
 RaiseEvent MyVariableIntegerChanged
End Set
Public Sub New()
    ThisInteger = 1 'belegt den Wert der Variablen myInteger mit 1 und löst den Event MyVariableIntegerChanged aus
End Sub
End Class

Ich kann nun auf den Event wie gewohnt reagieren, z.B. innerhalb der Klasse

Private Sub MyHandle() handles MyVariableIntegerChanged
 Messagebox.Show("Die Variable myInteger wurde geändert")
End Sub

Da ich hier den Event mit Public deklariert habe, steht er auch andernorts bei der Nutzung der Klasse zur Verfügung:

Public Class Irgendwo
Private withEvents meineKlasse as VariablenEventTest
Public Sub New()
meineKlasse = New VariablenEventTest()
End Sub

Private Sub MyHandle() handles meineKlasse.MyVariableIntegerChanged
 Messagebox.Show("Die Variable myInteger wurde geändert")
End Sub
End Class
Advertisements

Über Sascha Wald
Die Garagenfirmen sind ausgegangen... jedenfalls hatte ich in meinem Leben schon viele Ideen, die andere auch umgesetzt haben. Einige konnten davon gut profitieren. Berufung zum Besserwisser eben. Hier auch ein paar Dinge, die das IT Leben einfacher machen.

2 Responses to Bei Änderung von Variablenwerten einen Event auslösen

  1. Ein Softwareentwickler says:

    Hallo

    zum besseren Verständnis sollte es DAS Event und nicht fälschlicherweise DEN Event heissen. Man sagt im Deutschen auch DAS Ereignis und nicht DEN Ereignis, oder?!

    • Sascha Wald says:

      Lt. Duden ist es der oder das Event und damit kann man beide Schreibweisen anbringen. Ausserhalb des Dudens im wilden Süden gibt es aber auch „den Butter“; würde ich aber auch nicht unterstützen 😉

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: