List(Of T) soll ein Ereignis auslösen

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Vatter.

    List(Of T) soll ein Ereignis auslösen

    Hallo Leute,
    ich hab da mal ne meiner Meinung nach ausgefallene Frage:
    Ich habe eine Klasse in einem UserControl, die eine List(Of PointF) enthält. Diese Liste steht dem Entwickler zur Verfügung um Koordinaten zu speichern. Die Ausgabe der Koordinaten erfolgt mit GDI durch das UserControl.
    Nu zu meinem Prob:
    Bisher muss nach dem Hinzufügen oder Ändern von Koordinaten der Liste das UserControl mit Invalidate() neu gezeichnet werden. Ich hätte es gern luxuriöser :D . Bei einer normalen Property kann ich ja im Set-Zweig mit RaiseEvent ein Ereignis auslösen. Kriegt man das der List(Of T) auch beigebogen? Ich habe schon an einer erbenden Klasse mit einer Overrides Sub probiert :evil:
    Wenns nich geht, gehts nich, aber vielleicht...? 8o
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    Sollte funktionieren. Habe grade so versucht:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim WithEvents _Liste As New MyListe(Of String)
    3. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    4. End Sub
    5. Private Sub _Liste_ItemAdded(ByVal sender As Object, ByVal item As String) Handles _Liste.ItemAdded
    6. Debug.WriteLine(item)
    7. End Sub
    8. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    9. _Liste.Add(TextBox1.Text)
    10. End Sub
    11. End Class
    12. Public Class MyListe(Of T)
    13. Inherits List(Of T)
    14. Public Event ItemAdded(ByVal sender As Object, ByVal item As T)
    15. Public Overloads Sub Add(ByVal item As T)
    16. MyBase.Add(item)
    17. RaiseEvent ItemAdded(Me, item)
    18. End Sub
    19. End Class