ListView Ansicht Tile

  • VB.NET
  • .NET (FX) 4.0

Es gibt 23 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Ich würde dir raten das du dir daraus ein Control erstellst, ich hab dir die Klasse mal ein wenig aufgebohrt.

    Spoiler anzeigen

    C#-Quellcode

    1. using System.ComponentModel;
    2. using System.ComponentModel.Design;
    3. using System.Drawing;
    4. using System.Windows.Forms;
    5. namespace MyFancyTileView
    6. {
    7. [Designer("System.Windows.Forms.Design.ControlDesigner, System.Design", typeof(IDesigner))]
    8. public class MyFancyTileView : ListView
    9. {
    10. [Category("Darstellung"), RefreshProperties(RefreshProperties.All)]
    11. [Description("Font für den ersten Buchstaben")]
    12. public Font FirstCharFont { get; set; } = new Font("Arial", 12);
    13. [Category("Darstellung"), RefreshProperties(RefreshProperties.All)]
    14. [Description("Textfarbe für den ersten Buchstaben")]
    15. public Color FirstCharColor { get; set; } = Color.Red;
    16. public MyFancyTileView() : base()
    17. {
    18. View = View.Tile;
    19. OwnerDraw = true;
    20. }
    21. protected override void OnDrawItem(DrawListViewItemEventArgs e)
    22. {
    23. base.OnDrawItem(e);
    24. if (View != View.Tile)
    25. {
    26. e.DrawDefault = true;
    27. return;
    28. }
    29. TextRenderer.DrawText(e.Graphics, e.Item.Text.Substring(0, 1), FirstCharFont, e.Item.Bounds, FirstCharColor);
    30. Size firstCharSize = TextRenderer.MeasureText(e.Graphics, "I", FirstCharFont);
    31. Rectangle rect = e.Item.Bounds;
    32. rect.Width += firstCharSize.Width*2;
    33. TextRenderer.DrawText(e.Graphics, e.Item.Text.Substring(1, e.Item.Text.Length - 1), Font, rect, ForeColor);
    34. }
    35. }
    36. }



    1. Erstell dir ein neues Projekt vom Typ Klassenbibliothek. Visual Studio erstellt dabei gleich 1 Klasse (Class1) diese kannst du löschen. Und anschließend kopierst du die MyFancyTileView Klasse hinein.
    2. Jetzt musst du 2 Verweise setzen. Hierfür machst du einen Rechtsklick im Projektmappenexplorer einen Rechtsklick auf Verweise -> Verweis hinzufügen. Nun sollte sich der Verweismanager öffnen dort befindet sich rechts ein Suchfeld. Hier nach System.Windows.Forms & System.Drawing suchen und hinzufügen. Danach sollte es keine Fehler mehr geben und die solltest die Projektmappe erstellen können z.B. mit Druck auf F6.
    3. Nach dem erstellen kannst du dir z.B. ein weiteres Projekt erstellen oder ein bereits bestehndes öffnen. Ich würde dir empfehlen das du dir in der selben Projektmappe eins erstellst. Wichtig ist das du auf die Toolbox (Werkzeugkasten), also das Teil wo sich auch Buttons, Labels, usw... finden, zugreifen kannst.
    4. In die Toolbox machst du nun einen Rechtsklick damit sich das Kontextmenu öffnet. Im Kontextmenu wählst du dann "Elemente auswählen".
    5. Im dem Dialog der sich nun öffnet (Toolboxelemente auswählen) findet sich rechts unten ein Button "Durchsuchen" mit dem du nun die erstellte .dll (MyfancyTileView.dll) suchen musst.
    6. Nun solltest du in deiner Toolbox ein neues Element finden mit dem Namen MyFancyTileView. Damit kannst du nun wie mit jedem anderem Control arbeiten.

    Hab dazu auch noch eine Bildserie angehängt.
    @Fakiz Daraus eine DLL zu machen ist doch wohl etwas oversized.
    @toto Füge Deinem Projekt die Klasse MyFancyTileView hinzu, nach dem Compilieren ist das Control in der Toolbox verfügbar.
    Feddich.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!