ListBox Items mit zusatzinfos versehen

  • VB.NET

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

    ListBox Items mit zusatzinfos versehen

    Hi,

    ich habe ein Objekt von dem ich bestimmte Informationen als "grobe" Übersicht in einer ListBox speicher.(Name,Parameter1,Parameter2,...)
    Wenn sich ein Parameter des Objektes ändert habe ich mir Events generiert um auf die Änderungen reagieren zu können.

    In den Events wird mir eine übersicht der geänderten Parameter und des geänderten Objektes übergeben.

    Bei einem Objekt ist das ganze auch einfach indem ich das Objekt der ListBox neu hinzufüge, aber bei mehreren Objekten müsste ich jedes Item der ListBox durchgehen und die Gespeicherten Parameter mit den im Event gelieferten Parameter abgleichen, das ist jedoch alles andere als elegant, daher die Frage, kann man ohne großen Aufwand irgendwie ein "Tag"-Objekt für ein ListBox Item vergeben?
    Dann könnte ich als Referenz beim schreiben in die ListBox das Objekt mit angegben und beim eintreten des Events den "Sender" mit allen "Tag" Objekten der ListBoxItems vergleichen.

    Als "einfachste" Variante würde mir nur einfallen eine eigene ListBoxColletions-Klasse zu erzeugen (mit eben diesem zusätzen "Tag") und ein Objekt dieser eigenen ListBoxCollections-Klasse der ListBox hinzufügen.

    Gibt es da noch andere Wege ?


    mfg
    Eine Listbox kann ja ein Object aufnehmen, warum eine eigene Listbox erzeugen?
    Wenn du aus einem Object etwas anzeigen willst, überschreibe die ToString-function, und übergib dort einen brauchbaren Text. Die SelectedItem-Eigenschaft gibt dir dann das Objekt zurück, und du kannst auslesen, was du brauchst.

    Ich hoffe, es ist das, was du damit meinst:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    3. ListBox1.Items.Add(New whatever With {.whatelse = "angezeigter Text", .wherelse = "Zusatzinfo", .whoelse = "noch ne Zusatzinfo"})
    4. End Sub
    5. Private Sub ListBox1_DoubleClick(sender As Object, e As System.EventArgs) Handles ListBox1.DoubleClick
    6. MessageBox.Show(CType(ListBox1.SelectedItem, whatever).whoelse)
    7. End Sub
    8. End Class
    9. Public Class whatever
    10. Public whatelse As String
    11. Public wherelse As String
    12. Public whoelse As String
    13. Public Overrides Function ToString() As String
    14. Return whatelse.ToString() 'das wird in der Listbox angezeigt
    15. End Function
    16. End Class

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „der_Kurt“ ()

    Hi,

    das "schreiben" des items ist kein Problem, mein Problem ist es den Zusammenhang zwischen dem geänderten Objekt, welches neu "geschrieben" werden soll und dem aktuell in der ListBox gespeichertem Item herauszufinden.

    D.h.:

    Ich schreibe ObjektA.Name + ObjektA.Parameter1 + ObjektA.Parameter2 in die ListBox.

    Jetzt ändert sich irgendwann ObjektA, und jetzt muss ich heruasfinden welches Item in der ListBox den Namen/Parameter von ObjektA in der ListBox wiederspiegelt, da nicht nur ObjektA, sondern mittlerweile auch ObjektB, ObjektC, ObjektD,... in der ListBox stehen.

    Edit: könnte doch klappen, hab deinen Text falsch verstanden. Werd ich mal Probieren.

    Edit²: Funktioniert!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „mcdt“ ()