Individuelle Listbox / Tabelle

  • VB.NET
  • .NET (FX) 4.0

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Individuelle Listbox / Tabelle

    Hallo :)
    Ich überlege und tüftel seit letzter Nacht eine Funktion zu schreiben die mir erlaubt einen formatierten Listbox eintrag vorzunehmen..
    Meine Funktion soll wie folgt aussehen:

    Quellcode

    1. function add_item(itemname, menge, price, ser, sons){
    2. }


    Im Prinzip soll dann in der Listbox eine Zeile hinzugefügt werden, die mit den festgelegten Variablen gefüllt wird.
    Die Funktion an sich klingt plausibel, jedoch hackt es bei mir an der Listbox.

    Wie kann ich diese so manipulieren das ich im Prinzip einfach eine Maske mit Variablen habe die mittels der Funktion gefüllt wird?
    Letzendlich soll das alles so aussehen (Siehe Anhang).


    Habt ihr eine Idee?
    Bilder
    • listbpx.png

      5,66 kB, 579×161, 70 mal angesehen
    Für ein "individuelles" Aussehen der Listbox ist die Option "OwnerDraw(Fixded) interessant.
    einfach die Itemsheigh festlegen, und du kannst per Eintrag machen was immer du willst.

    hier mal ein einfachaches Beispiel, wie man vorgehen könnte
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Structure stcEntry
    2. Dim Name As String
    3. Dim Menge As Integer
    4. Dim Price As Decimal
    5. Dim Serial As String
    6. End Structure
    7. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    8. Dim Entry As New stcEntry
    9. Entry.Name = "Viagra"
    10. Entry.Menge = 200
    11. Entry.Price = 10
    12. Entry.Serial = "1a0812"
    13. ListBox1.Items.Add(Entry)
    14. Entry.Name = "SahneEis"
    15. Entry.Menge = 2
    16. Entry.Price = 4
    17. Entry.Serial = "4711x13"
    18. ListBox1.Items.Add(Entry)
    19. End Sub
    20. Private Sub ListBox1_DrawItem(sender As Object, e As System.Windows.Forms.DrawItemEventArgs) Handles ListBox1.DrawItem
    21. e.DrawBackground()
    22. If e.Index = -1 Then Exit Sub
    23. Dim Entry As stcEntry = CType(ListBox1.Items(e.Index), stcEntry)
    24. e.Graphics.DrawString(Entry.Name, ListBox1.Font, Brushes.Black, e.Bounds.X, e.Bounds.Y)
    25. e.Graphics.DrawString(Entry.Price.ToString("F2"), ListBox1.Font, Brushes.Black, e.Bounds.X + 120, e.Bounds.Y)
    26. e.Graphics.DrawString(Entry.Serial, ListBox1.Font, Brushes.DimGray, e.Bounds.X, e.Bounds.Y + ListBox1.Font.Height)
    27. e.Graphics.FillRectangle(Brushes.Black, e.Bounds.X, e.Bounds.Bottom - 2, ListBox1.ClientRectangle.Width, 2)
    28. End Sub

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

    :) und ich hasse es irgendwas therotetisch zu erklären wo mir die Worte fehlen und raum für 1000 Fehler sind.
    es ist für mich(!) einfacher.. kurz zu zeigen was ich meine.

    Aber man muss es ja nicht lesen :)

    Solange die Idee als solches rüberkommt, reicht es ja.

    Vielleicht hilft es ja anderen, die ähnliche Probleme haben.

    Radanua schrieb:

    C#-Quellcode

    1. function add_item(itemname, menge, price, ser, sons){
    2. }
    (Komisch, dass du "VB" gelabelt hast - es ist doch eher c#)
    Jedenfalls das ist eindeutig eine Methode, die einen Datensatz zufügt.
    Und was du codest würde ich demnach auch als Datenverarbeitung bezeichnen.

    Dafür gibts bereits eine Menge im Framework, die solch phänomenal prima unterstützt - insbesondere mittm DGV (aber Listbox geht auch, wenn man sich viel Arbeit machen will ;) )
    Guggemol vier Views-Videos