ListView item einem icon hinzufügen

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

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Fakiz.

    ListView item einem icon hinzufügen

    Hallo,

    gibt es eine Möglichkeit, einem Bestehenden item in der ListView Icon zu vergeben?
    Und das Icon soll aus der Ressource genutzt werden.


    Beispiel:
    Yurex - Willkommen (HIER DAS ICON)

    Bis jetzt sieht es so aus wie im Anhang.

    lg.
    Bilder
    • listview.jpg

      25,39 kB, 575×810, 116 mal angesehen

    Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben.


    1. Allgemein
    ...
    b) Benutzt die Suchfunktion, bevor ihr Fragen im Forum stellt, denn es ist relativ wahrscheinlich,
    dass euer Thema schon behandelt wurde. Versucht auch mal unterschiedliche Suchbegriffe und gebt die Suche nicht
    sofort auf, wenn ihr nichts gefunden habt. Hinweis: Es gibt auch eine erweiterte Suchfunktion!

    c) Weitere gute Anlaufstellen, bevor ihr ein Posting erstellt, sind auch
    Google, unsere Tipps&Tricks-/Tutorial-Rubrik, der Sourcecode Austausch und dieser Thread.
    Beachtet auch die festgepinnten Threads in den Unterforen sowie die Hinweise bei Thread-/Postingerstellung.
    ...


    Hier ist doch mal wieder eindeutig zu erkennen, daß der TE null Eigeninitiative an den Tag legt !
    Im übrigen, habe ich die gestellte Frage exakt beantwortet ! ;)
    Füg deinem Projekt eine ImageList zu, pack da dann all deine Bilder rein, weis deiner ListView dann diese ImageList unter SmallImageList zu
    und änder die "View"-Eigenschaft nach deinen Belieben.
    Dann beim Items hinzufügen einfach sowas wie:

    VB.NET-Quellcode

    1. ListView1.Items.Add("Irgendein Item", 0)


    wobei 0 hier der Index des Bildes deiner ImageList ist.


    Meine Website:
    www.renebischof.de

    Meine erste App (Android):
    PartyPalooza
    Das ist möglich aber etwas kompliziert, du müsstest entweder das SubItem selbst zeichnen oder du bettest eine PictureBox ein. Letzteres hab ich vor einigen Jahren Mal gemacht eventuell hilft dir das weiter DataListView. Oder du machst es wie Xored schrieb dann hast du das Icon halt am Textanfang.

    Edit:
    Ich hab das grad mal ausprobiert, mit OwnerDraw sollte sich das umsetzen lassen.
    1. Erstell dir eine Klasse und lass diese von ListView erben.
    2. Im Konstruktor stellst du OwnerDraw=true
    3. Musst du die Methode OnDrawColumnHeader(DrawListViewColumnHeaderEventArgs e) und die Eigenschaft DrawDefault des DrawListViewColumnHeaderEventArgs auf true setzen (e.DrawDefault=true).
    4. Nun musst du noch die OnDrawSubItem(DrawListViewSubItemEventArgs e) Methode überschreiben, in dieser musst du dann dein Item zeichnen.
    Beispiel

    C#-Quellcode

    1. protected override void OnDrawSubItem(DrawListViewSubItemEventArgs e)
    2. {
    3. // Falls es sich nicht um das erste SubItem handelt oder die ListView nicht in der Detailansicht ist wird das SubItem normal gezeichnet.
    4. if (e.ColumnIndex > 0 || View != View.Details)
    5. {
    6. base.OnDrawSubItem(e);
    7. e.DrawDefault = true;
    8. return;
    9. }
    10. // Zeichnet den Text des Items
    11. using (SolidBrush br = new SolidBrush(ForeColor))
    12. e.Graphics.DrawString(e.Item.Text, e.Item.Font, br, (RectangleF)e.Bounds, new StringFormat() { LineAlignment = StringAlignment.Center });
    13. // Zeichnet das Icon
    14. SizeF textSize = e.Graphics.MeasureString(e.Item.Text, e.Item.Font);
    15. Bitmap bmp = new Bitmap(Properties.Resources.favicon.ToBitmap(), new Size(18,18));
    16. e.Graphics.DrawImage(bmp, new PointF(Math.Min(textSize.Width, e.Bounds.Width), e.Bounds.Top));
    17. }



    Das ganze ist ausbaufähig, vorallem wenn es mehr als eine Spalte gibt. Aber als Einstieg sollte es reichen.
    Sieht dann so aus:

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

    Vollzitat eines Vorposts an dieser Stelle entfernt und durch Anrede ersetzt ~VaporiZed

    @FormFollowsFunction: Ich sehe dein "Ja." nicht als besonders hilfsreich.
    Der Thread im Allgemeinen ist für Hilfestellung da. Und solltest du nicht gern den Leuten hier helfen wollen, sondern Sie nur auf die Suchfunktion aufmerksam machen. Bitte ich dich meine Fragen in Zukunft nicht zu beantworten danke.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „VaporiZed“ ()

    Fakiz schrieb:

    Das ist möglich aber etwas kompliziert, du müsstest entweder das SubItem selbst zeichnen oder du bettest eine PictureBox ein.
    Nö - standardmässig sind Icons in Listviews vorgesehen, und die Vorgehensweise ist wie von Xored beschrieben.
    selber zeichnen muss man dabei nix.
    Fast alles kann man im Designer machen, nur wenn man codeseitig ein Item zufügt, dann muss man ihm den ImageIndex mitgeben, damit das ListView weiss, welches Icon es da hinmalen soll.