Custom ListBox

  • VB.NET

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von vb-checker.

    Custom ListBox

    Abend,

    ich würde gerne wissen wie man eine Custom ListBox erstellt. Buttons zb sind kein Problem,
    allerdings bekomme ich die ListBox nicht gut auf die Reihe. Wie das ganze am Ende aussehen soll ist im Anhang.

    Info: Ich schreibe das ganze in C#, aber da das ganze einfach übertragbar und keine C#-Spezifische Frage ist,
    stelle ich sie hier. Mit C#-Code gibt es also kein Problem. (Wieso sollte es auch) :)

    Grüße
    Bilder
    • customlist.png

      6,26 kB, 800×600, 188 mal angesehen
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
    Was genau soll die Listbox denn können? Die simpelste Version, die einfache Strings darstellt, ist (die Scrollbar mit inbegriffen) etwa 200 Zeilen Programmierarbeit. Wenn du so Sachen wie Databinding oder Items, die selbst wieder Steuerelemente enthalten, haben willst, dann werdens vermutlich ein paar tausend Zeilen.
    ist in WinForms nicht gut möglich.

    Am ehesten noch mit Owner-Item-Drawing - da gabs mal ein gutes Tut von FreakJns zu.

    Aber eigentlich - wenn man so Schnickschnack will, sollte man sich an wpf wenden.

    ah - hier isses ja schon: [VB 2008] [Beispielprojekt] Listbox erweitern

    wie gesagt: prinzipiell fragwürdig, denn da entwickelst du eine dolle Listbox, die grad mal genau eine Art von Datensätzen anzeigen kann.
    WPF ist dafür leider nicht drinnen. Aber selbst wenn es das wäre wäre ich vermutlich zu unfähig, überhaupt eine ListBox
    in WPF darzustellen. :D

    Da ich sowieso einen eigenen Button einbinden wollte ist es kein Problem den selbst darauf zu zeichnen.
    Ich schau mir mal das Beispielprojekt an.

    @Artentus: Tausend+ Zeilen? Glaube ich nicht so wirklich...

    Danke euch ;)
    Grüße
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
    Siehe Screenshot. Mehr soll sie nicht können.
    Prinzipiell muss ich ja dann nur ein eigenes Item zeichnen und der ListBox sagen, dass die Items größer als normal sind.
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
    @Artentus:

    So besser? ;)
    Bilder
    • customitem.png

      3,54 kB, 575×99, 154 mal angesehen
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
    Ja. :)
    Du hast da aber diesen Button drauf, ich weiß nicht, obs da mit ein bisschen GDI alleine getan ist. Du könntest Probleme damit bekommen, einen Klick auf den Button zu registrieren, da die Listbox leider sehr unanpassungsfähig ist und afaik kein Item-Klick Ereignis hat, das dir auch noch die Mauskoordinaten relativ zum Item gibt.
    Hat sie nicht? oO
    Irgendwelche Ideen das zu lösen? Ansonsten müsste ich mir was anderes einfallen lassen, was nicht grade einfach wäre.

    Grüße
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
    @SpaceyX: Seit wann kann man dynamisch UserControls als List darstellen?

    Grüße
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
    Nö, sowas hat die Listbox nicht, deswegen ist sie ja auch so schlecht für benutzerdefinierte Items geeignet. Du könntest höchstens das Click-Event der Listbox abfangen und dann mit dieser Funktion jedes Item hittesten. Dann musst du halt noch die dazu relative Position des Buttons berechnen.
    GetItemRectangle aber kein ItemClick. Schon Bullshit.
    Ich denke mal ich werde das ganze dann per eigenem Addressprefix und Online-DB lösen.
    Einfacher und dementsprechend wohl effizienter.

    Danke für eure Hilfe und schönen Freitag :)

    Grüße
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
    @Nikx: Indem Du einfach ein UserControl erstellst, was Dein Vorhaben abbildet und diese Instanzen dann in ein FlowlayoutPanel steckst. Sieht aus wie eine Liste, ist aber keine. Aber gut.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Wenn du es mit einer Listbox weiter versuchen willst, stelle dich auf ein bissl Geflackere ein. Siehe hier: i.imgur.com/KctQP5m.gif
    Das habe ich im Rahmen dieses Threads erstellt, da findest du bestimmt vieles (auch Code), das dir weiterhilft: [VB 2012] List-Control à la Firefox' Download-Manager

    Skybird schrieb:

    Das sind ja Ubisoftmethoden hier !