Listview Header mit Icon

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Gelöschter Benutzer.

    Listview Header mit Icon

    Hallo,

    ich habe folgendes Problem. Wenn ich im Listview einem Header ein Icon/Bild per Imagelist zuweise, dann wird das Bild angezeigt und nach einem Abstand, der fast wieder die Bildgröße hat, die Überschrift der Spalte. Wie kann ich erreichen, dass die Überschrift direkt nach dem Bild angezeigt wird?



    Gruß
    Achim
    Du könntest die Header selbst zeichnen, ansonsten wüsste ich keine Lösung. Dazu aktivierst du OwnerDraw für das Control und kannst dann im DrawItem-Event einfach DrawDefault auf true setzen, dann musst du dich darum nicht kümmern, sondern nur um das DrawColumnHeader-Event. In diesem kannst du den Hintergrund über e.DrawBackground() zeichnen lassen und dann dein Bild über e.Header.ImageIndex herausfinden und es dann mit e.Graphics and die durch e.Bounds.X und Y gegebene Stelle zeichnen und danach auch den Text (gegeben durch e.Header.Text).

    Skybird schrieb:

    Das sind ja Ubisoftmethoden hier !

    Du könntest die Header selbst zeichnen, ansonsten wüsste ich keine Lösung. Dazu aktivierst du OwnerDraw für das Control und kannst dann im DrawItem-Event einfach DrawDefault auf true setzen, dann musst du dich darum nicht kümmern, sondern nur um das DrawColumnHeader-Event.

    Das würde ich hinbekommen, aber des Zeichnen des Icon und dem Text nicht. Vielleicht kannst du mir da noch helfen?
    @achim3868:
    Im DrawColumnHeader-Event:

    VB.NET-Quellcode

    1. e.DrawBackground()
    2. e.Graphics.DrawImage(DeineImageList.Images(e.Header.ImageIndex), e.Bounds.X + 3, e.Bounds.Y + 3) 'die genaue positionierung musst du dir anschauen, 3 ist zufällig gewählt/geschätzt
    3. e.Graphics.DrawString(e.Header.Text, e.Font, Brushes.Black, New RectangleF(e.Bounds.X + 20, e.Bounds.Y, e.Bounds.Width - 20, e.Bounds.Height))
    Ist aus dem kopf geschrieben, aber sollte so passen.

    Skybird schrieb:

    Das sind ja Ubisoftmethoden hier !