Datagridview: Autosizecolumnsmode=allcells ... und trotzdem sind die Zellen zu klein für den Inhalt.

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

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Schamash.

    Datagridview: Autosizecolumnsmode=allcells ... und trotzdem sind die Zellen zu klein für den Inhalt.

    Hallo!

    Ich habe folgendes Problem.

    In einer Datagridview habe ich die Einstellung Autosizecolumnsmode=allcells (alle anderen habe ich auch ausprobiert). Wenn Inhalte in die Zellen eingegeben werden, wird die Spaltenbreite angepasst, jedoch nicht ausreichend. Am Ende steht da dann z.B. nicht LABUNI, sondern LAB... in der Zelle. Wenn ich LABUNILABUNI schreibe, dann passt er die Spaltenbreite wieder an (nicht genug) und es steht da LABUNILAB...

    Hier ein Screenshot: Es sollte da EK/LAT stehen






    So sieht es aus, wenn noch mehr Inhalt dazu kommt: (Es sollte da nun EK/LAT/TST stehen)




    Ich habe verschiedene Schriftarten probiert und auch Padding entsprechend ausprobiert. Nichts hilft.


    Vielen Dank

    LABUNI

    PS: die Namen und die Firma sind frei erfunden. Die Namen wurden per Zufallsgenerator erstellt.
    Alle sagten: Das geht nicht. Dann kam einer, der wusste das nicht und hat's gemacht.

    Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von „LABUNI“ ()

    Ich glaube, dein Screenshot wird nicht richtig dargestellt. So könnte man dein Problem besser nachvollziehen.

    ​Ich habe verschiedene Schriftarten probiert und auch Padding entsprechend ausprobiert. Nichts hilft.
    Ich weiß nicht was du unter "entsprechend verstehst. Schön und gut dass du es versuchst, aber so wirst du nicht weit kommen. Pass auf: Schreibe doch dein eigenes Datagridview, dazu müsstest du die Technologie / Algo rausfinden oder du benutzt ein Control aus dem Internet. Umschreiben kann man das (oder den?) Datagridview ja wohl kaum und Eigenschafts-Wetre kenne ich für diesen Zweck auch nicht. Die beste Lösung wäre aber, wenn du das (oder den) Datagridview größer einstellst :D

    Grüße, ExteNesia.de
    Bei mir werden die Screenshots richtig dargestellt. Wichtig sind nur die Zellen mit den "..." die erscheinen, obwohl die Autosizefunction für die Spaltenbreite aktiv ist.

    entsprechen heißt nur - daran liegts nicht.

    Ein eigenes Datagridview zu programmieren würde den Rahmen sprengen. Ich bin mir ganz sicher, dass es nur eine Kleinigkeit ist - ich finde sie nur nicht.

    Größer einstellen geht eben nicht, weil die Autosizefunction an ist. Entweder bestimmt man die Größe manuell selbst oder lässt sie das System automatisch machen. Dazwischen gibts nichts.
    Alle sagten: Das geht nicht. Dann kam einer, der wusste das nicht und hat's gemacht.
    ​Der bringt mich nur leider nicht weiter.
    Naja ich weiß auch nicht, vielleicht solltest du das ganze nicht so einfach nehmen. Erstens gibt es keine bestimmte Eigenschaft dafür - heißt, du musst das aufwendig umscheiben, dein eigenes Datagridview erstellen oder ein anderes Datagridview-Control im Internet finden. ALternativ halt das Datagridview manuell anpassen und Auto abstellen. Ich weiß ja nicht, was die Kollegen aus dem Forum meinen
    Hi,
    also allCells bedeutet ja, das das DGV automatisch so angepasst wird, das alle Spalten angezeigt werden können
    nimm einfach Fill und stelle dann entsprechend in Spalten bearbeiten explicit, also fill oder all cells...
    "Hier könnte Ihre Werbung stehen..."
    Hallo!

    Hier kommt eine Lösung des Problems:

    1. Autosizemode auf Allcells Spalte für Spalte
    2. Anschließend Spalte für Spalte die Spaltenbreite in einer Variable speichern
    3. Autositzemode in der gleichen Schleife dann wieder ausstellen
    4. Die Spaltenbreite manuell einstellen mit der ermittelten Spaltenbreite plus einen beliebigen Wert (z.B. 2)
    5. Alle Spaltenbreiten sind nun prima!

    Das könnte als Code so aussehen:

    VB.NET-Quellcode

    1. For i = 0 To Datagridview1.Columns.Count - 1
    2. Datagridview1.Columns(i).AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells
    3. Next
    4. For i = 0 To Datagridview1.Columns.Count - 1
    5. Dim Spaltenbreite As Integer = Datagridview1.Columns(i).Width
    6. Datagridview1.Columns(i).AutoSizeMode = DataGridViewAutoSizeColumnMode.None
    7. Datagridview1.Columns(i).Width = Spaltenbreite + 2
    8. Next


    Viele Grüße

    Das Thema kann geschlossen werden.
    Alle sagten: Das geht nicht. Dann kam einer, der wusste das nicht und hat's gemacht.

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

    Wäre es dann nicht "schneller" wenn du das in einer schleife anbhandelst?

    bin aber auch nicht sicher warum du nicht einfach ".fill" verwendest

    VB.NET-Quellcode

    1. For i = 0 To Datagridview1.Columns.Count - 1
    2. Datagridview1.Columns(i).AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells
    3. Dim Spaltenbreite As Integer = Datagridview1.Columns(i).Width
    4. Datagridview1.Columns(i).AutoSizeMode = DataGridViewAutoSizeColumnMode.None
    5. Datagridview1.Columns(i).Width = Spaltenbreite + 2
    6. Next
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."