ListOf-Property Add-"Event" abfangen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von kleinM.

    ListOf-Property Add-"Event" abfangen

    Hallo zsm,
    habe ein kleines Problemchen, dass sich sicher auch anderst lösen lässt, aber man will ja auch dazu lernen:

    VB.NET-Quellcode

    1. 'filter-feld und -eingabe
    2. Private strFilter As New List(Of clsDatagridFilter)
    3. Public Property prpFilter() As List(Of clsDatagridFilter)
    4. Get
    5. Return strFilter
    6. End Get
    7. Set(ByVal value As List(Of clsDatagridFilter))
    8. strFilter = value
    9. ClearSearch()
    10. End Set
    11. End Property


    Ich habe eine ListOf-Property und möchte dass der Setter-Teil ausgeführt wird, sobald an prpFilter etwas geändert wird.
    Bei .Add wird der Set() nicht ausgeführt, was auch nachvollziehbar ist. Trotzdem würde ich .Add auch in der Property iwie abfangen können.
    Iwelche Ideen? :huh:
    Eigene Klasse schreiben, die von List(Of T) erbt und die Add()-Methode überschreiben, so dass sie ein selbst definiertes Event auslöst.

    Oder (was eher unpraktikabel ist) bei jedem Add() Aufruf ein Event selber feuern. Das Event selber führt dann den Setter-Teil aus
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell
    Das was du suchst ist eine ObservableCollection(Of T).
    Diese stellt das CollectionChanged-Event zur Verfügung welche dich über Add, Remove, ... benachrichtigt.
    Anbei ein Beispiel:

    VB.NET-Quellcode

    1. Imports System.Collections.ObjectModel
    2. Imports System.Collections.Specialized
    3. Public Class Form1
    4. Private _observableCollection As ObservableCollection(Of String)
    5. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    6. _observableCollection.Add("Hallo")
    7. End Sub
    8. Public Sub New()
    9. InitializeComponent()
    10. _observableCollection = New ObservableCollection(Of String)()
    11. AddHandler _observableCollection.CollectionChanged, AddressOf Changed
    12. End Sub
    13. Private Sub Changed(sender As Object, e As NotifyCollectionChangedEventArgs)
    14. If e.Action = NotifyCollectionChangedAction.Add Then
    15. Debug.Print("Add")
    16. Else
    17. Debug.Print("anderes")
    18. End If
    19. End Sub
    20. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    21. _observableCollection.Remove("Hallo")
    22. End Sub
    23. End Class


    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten