Announcement

Collapse
No announcement yet.

WinForms - Fenster seinen Controls anpassen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • WinForms - Fenster seinen Controls anpassen

    Hallo Experten,

    ich habe ein Fenster von System.Windows.Forms.Form abgeleitet. Es enthält wenigstens ein DataGridView, wahrscheinlich mit zwei Buttons gemeinsam in einem TableLayoutPanel.

    Das DataGridView kann seine Spaltenbreite dem Inhalt anpassen.
    Es kann weiterhin unterschiedlich viele Zeilen enthalten.

    Wie berechne ich eine Fenstergröße, in die das TableLayoutPanel genau hineinpasst?

    Mit freundlichem Gruß,


    luker

  • #2
    Warum musst Du denn die Fenstergröße berechnen? Jedes Steuerelement hat eine Eigenschaft Dock. Setzt Du diese auf Parent, dann wird dieses Steuerelement automatisch an die größe des Usercontrols angepasst, welches es beinhaltet.
    Also quasi:
    Deine Form beinhaltet ein TableLayoutPanel. Dieses setzt Du auf Dock Parent, dann passt es sich genau der Form an. Genauso kannst Du es auch mit allen Controls machen die ins TableLayoutPanel gesetzt werden.

    Comment


    • #3
      Das habe ich natürlich schon so gemacht. Aber für den Start hätte ich gern, dass das DataGridView seine Spalten so breit macht, wie deren Inhalt es erfordert (wie bei einem Doppelklick zwischen zwei ColumnHeaders) und das Fenster sich dem DataGridView anpasst.

      Comment


      • #4
        Also das im GridView ist ganz einfach. Dafür gibt es die Funktion AutoResizeColumns() mit diversen Überladungen. Allerdings wäre ich damit sparsam, denn gerade bei großen Datenmengen kann das schon mal etwas dauern, bis er für alle Spalten die korrekte Breite ermittelt hat.
        Ich weiss nicht ob man dann die letztendliche Breite der Spalten einfach so Abfragen kann. Allerdings könntest Du einfach über alle Spalten iterieren und die einzelnen Spaltenbreiten manuell zusammenzählen und das Fenster auf diese Breite einstellen. Sowas sollte wohl machbar sein.

        Comment


        • #5
          [gelöst]

          Danke fanderlf,

          Ich habe es jetzt so gemacht
          Fenstergröße= (Inhaltsgröße+10%) + (Fenstergröße - ClientRectangle)

          Comment

          Working...
          X