Zeilenhöhe einer DataGridView einstellen

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

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

    Zeilenhöhe einer DataGridView einstellen

    Hi,

    möglicherweise bin ich einfach "betriebsblind" ... aber an dem Problem hänge ich jetzt schon eine geraume Weile.

    Die Breite einer Spalte in einer DataGridView kann man problemlos vom Program aus einstellen:

    VB.NET-Quellcode

    1. dgvFiles.Columns("itmIcon").Width = 100


    Aber wie kann ich denn die HÖHE der ZEILEN einer Datagridview einstellen. Ich hätte jetzt irgend eine Eigenschaft wie "RowHeight" vermutet ... aber da finde ich nix ...

    Das sollte doch aber irgendwie möglich sein. Ich hoffe, ihr könnt mir (wieder mal) auf die Sprünge helfen.

    LG
    Peter
    Tausend Dank! RowTemplate ... das war die Eigenschaft, die ich gesucht hatte !

    Damit flutscht mein Programm ! Juhuuu .... :)

    Eine kleine Zusatzfrage: gibt es die Möglichkeit einen Zwischenraum zwischen den Zeilen zu definieren? Ich hätte da eine Eigenschaft wie "RowSpacing" vermutet ... aber vielleicht gibt es die Möglichkeit ja auch gar nicht ...
    supi ... DividerHeight ist genau die richtige Eigenschaft.

    Jetzt habe ich aber doch noch ein kleines Problem ... mit BackgroundColor habe ich den Hintergrund gelb eingefärbt.

    Wenn ich jetzt DividerHeight setze, werden die Zwischenräume grau dargestellt. (s. Anlage). Wie kann ich denn die Zwischenräume einfärben?
    Bilder
    • Icon datagridview.jpg

      153,47 kB, 586×386, 253 mal angesehen
    Vielen Dank für eure "unisono" Antwort.

    Leider klappt das bei mir aber nicht.

    VB.NET-Quellcode

    1. dgvFiles.DefaultCellStyle.BackColor = SearchmodeColor 'color cell area
    2. dgvFiles.BackgroundColor = SearchmodeColor 'color free area
    3. dgvFiles.GridColor = Color.Blue '***TEST*** 'color divider area


    Die Color.Blue Anweisung wird zwar ausgeführt aber das Display bleibt das Gleiche!

    Ich muss dazu sagen, dass ich keine GridLines anzeige (CellBorderStyle = None) ... Vielleicht hängt das damit zusammen, dass die Color.Blue Sache nicht funzt.

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

    @Peter329 Ich würde eher DeviderHeight auf 0 belassen und die Höhe anständig einstellen, ansonsten hast Du in der 0. Spalte Effekte.
    Das ganze sieht mir etwas oversized aus.
    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!
    Wenn ich die DividerHeigth auf 0 belasse, dann "stoßen" die Icons aneinander.

    Ich hätte aber gern ein bissl Platz zwischen den Icons. Insofern ist das Layout mit dem Divider schon das, was ich möchte. Nur die Farbe stört mich hatl!

    Peter329 schrieb:

    dann "stoßen" die Icons aneinander
    Das gewht alles auch über RowTemplate.Height zu machen, Du musst lediglich die Höhe (und Breite) der Zellen gleich der Höhe / Breite der (größten) Bitmap + Offset zu machen.
    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!
    Es gibt leider icons, die sind affig groß. Der .ico file enthält mehrere Versionen des gleichen Icons in unterschiedlichen Größen - und das erste Icon wird angezeigt.

    Die originale Größe solcher Icons will ich gar nicht anzeigen. Entweder schneide ich sie ab ... oder ich quetsche sie mit "zoom" in die Zelle. Aber genau deshalb kann ich halt deine Technik nicht verwenden. Ich brauche ein bissl Space zwischen den Zeilen.

    @VB1963 ... jetzt hätte ich beinahe deinen Beitrag übersehen.

    Jau, mit dem DataGridViewCellBorderStyle.SingleHorizontal klappt das ... jetzt wird auch der Zwischenraum korrekt eingefärbt.

    Uff, das war ja eine schwierige Geburt. Aber jetzt klappt die Sache.

    Danke an alle Ratgeber!

    LG
    Peter

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

    Sind das immer die selben Icons sind, die Du anzeigst, würde ich die einmalig designen, dass sie alle gleich groß sind und feddich.
    Da weißt Du wenigstens, dass sie alle gut angezeigt werden.
    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!
    Nee, ich zeichne selbst ganz selten Icons ... da bin ich nämlich viel zu faul dazu. Das sind Icons, die ich halt so sammle, damit man bei Bedarf was "zur Hand" hat ... und die sind so groß wie sie sind. :) Nur wenn ich ein Icon dann tatsächlich auch verwende, dann nutze ich einen Icon Editor, um das Dinges auf eine vernünftige Größe zu bringen.

    Vielen Dank nochmal an alle Ratgeber. Ich finde das toll, dass ihr euch so eingehend mit meinen großen und kleinen Problemen beschäftigt. Ihr habt meinen Sonntag gerettet!

    LG
    Peter

    Peter329 schrieb:

    um das Dinges auf eine vernünftige Größe zu bringen
    Das kannst Du auch per Code machen:

    VB.NET-Quellcode

    1. Dim newWidth = 64
    2. Dim newHeight = 64
    3. Dim ori = New Bitmap("C:\Temp\BMP.png")
    4. Using bmp = New Bitmap(newWidth, newHeight)
    5. Dim g = Graphics.FromImage(bmp)
    6. g.DrawImage(ori, 0, 0, newWidth, newHeight)
    7. bmp.Save("C:\Temp\BMP_klein.png", Imaging.ImageFormat.Png)
    8. End Using
    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!