vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Vorschlag; Erweiterung der List(of T) um das ValueChanging-Ereignis 
Autor: Manfred X
Datum: 28.12.09 08:36

(Wir sind immer noch in Net-VB !!)

Eine recht einfache Möglichkeit, Wertveränderungen durch
Ereignisse zu überwachen, besteht in der Erweiterung der
generischen List(of T) (System.Collections.Generic).

Man beschattet die Standardeigenschaft "Item" (Wertzuweisungen)
und fügt die benötigten Ereignisse ein.
Im Beispiel meldet das Ereignis "ValueChanging", dass ein Wertwechsel
bei einem Item der Liste stattfinden soll und informiert über den
bisherigen und den neu einzutragenden Wert.
Bei der Ereignisverarbeitung kann der einzutragende Wert direkt
abgeändert werden.

    Public Class ListEv(Of t)
        Inherits System.Collections.Generic.List(Of t)
        Private _SuspendEvents As Boolean = False
 
        Public Event ValueChanging(ByVal Index As Integer, _
                                   ByVal OldValue As t, ByRef NewValue As t)
 
        Public Event Valuechanged(ByVal Index As Integer, ByVal newvalue As t)
 
        Public Property Suspend_Events() As Boolean
            Get
                Return _suspendevents
            End Get
            Set(ByVal value As Boolean)
                _suspendevents = value
            End Set
        End Property
 
        Default Public Shadows Property item(ByVal index As Integer) As t
            Get
                Return MyBase.Item(index)
            End Get
            Set(ByVal value As t)
                If Not _SuspendEvents Then
                    RaiseEvent ValueChanging(index, MyBase.Item(index), value)
                End If
 
                MyBase.Item(index) = value
 
                If Not _SuspendEvents Then
                    RaiseEvent Valuechanged(index, MyBase.Item(index))
                End If
            End Set
        End Property
    End Class
Um Wertwechsel zu überwachen, muss im Deklarationsteil des Formulars
eine Instanz der Klasse erstellt werden (im benötigten Datentyp):

     Dim WithEvents myIntegers As New ListEv(Of Integer)
Im Form_Load-Ereignis werden die benötigten Elemente der Liste
hinzugefügt (dabei kann ein Startwert zugewiesen werden).
Es werden noch keine Ereignisse ausgelöst.

   For i As Integer = 0 To 9
      myIntegers.Add(0)
   Next i
Versucht man nun, einen Wert auf eines der Elemente zuzuweisen,
wird das Changing-Ereignis ausgelöst:

    MyIntegers(5) = 12
Die Verarbeitung des Ereignisses erfolgt wie gewohnt:

    Private Sub myIntegers_ValueChanging(ByVal Index As Integer, _
        ByVal OldValue As Integer, ByRef NewValue As Integer) _
        Handles myIntegers.ValueChanging
 
        Dim r As Microsoft.VisualBasic.MsgBoxResult
 
        r = Microsoft.VisualBasic.MsgBox("Integer " & CStr(Index) & _
        " soll geändert werden" & Microsoft.VisualBasic.vbCrLf & _
        "von " & CStr(OldValue) & " zu " & CStr(NewValue), _
        Microsoft.VisualBasic.MsgBoxStyle.OkCancel)
 
        If r = Microsoft.VisualBasic.MsgBoxResult.Cancel Then
            NewValue = OldValue
        End If
    End Sub
Vor einer größeren Menge von Wertänderungen kann man die
Ereignisse vorübergehend abschalten:

        myIntegers.Suspend_Events = True
        For i As Integer = 0 To 1000
            myIntegers(1) += i
        Next i
        myIntegers.Suspend_Events = False


Beitrag wurde zuletzt am 28.12.09 um 08:38:28 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Variable überwachen und event bei Änderung starten6.038Goofie25.12.09 17:35
Re: Variable überwachen und event bei Änderung starten3.063Dirk25.12.09 20:21
Re: Variable überwachen und event bei Änderung starten3.048Manfred X25.12.09 21:42
Vorschlag; Erweiterung der List(of T) um das ValueChanging-E...3.022Manfred X28.12.09 08:36

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel