Announcement

Collapse
No announcement yet.

TableLayoutPanel Gesamt Höhe

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

  • TableLayoutPanel Gesamt Höhe

    Guten Tag Community

    Ich bin gerade an einem unfangreichem Projekt, und habe ein kleines Problem mit dem TableLayoutPanel. Dazu habe ich ein kleines Beispiel kurz zusammengebastelt und in den Anhang gelegt. Das Problem befindet sich in der Datei "tlp.vb".

    Sorry, den Anhang habe ich wirklich nur kurz zusammen gestellt. Aber zum zeigen wo das Problem ist reicht es sicher.


    Simulation:
    Siehe Datei "tlp.vb" >>> Protected Overrides Sub OnResize(e As EventArgs)

    Mit diesem Beispiel simuliere ich den Text in einer RichTextBox. Man stelle sich vor, der Text in der RichTextBox sei mehrere Zeilen lang.

    In meinem Projekt habe ich die Höhe der RichTextBox angepasst an dem vorhandenen Text, und zwar so, dass die Höhe so gross ist, dass keine Scrollbalken (für die RTB) entsteht.
    Protected Sub OnMeasureItem(ByVal e As MeasureItemEventArgs)
    >>> e.Graphics.MeasureString

    Wird das Formfenster in die Breite gezogen, so verteilt sich natürlich auch der Text in der RichTextBox. Die RichTextBox-Höhe wird kleiner.


    Problembeschreibung:
    Das TableLayoutPanel behält eine angefahrenene MaximalHöhe immer fix. Auch wenn im nachhinein die RowItems (RowStyles(x).Height) in der Höhe kleiner werden, bleibt die Maximalhöhe fix, und lässt sich nicht verändern.

    Ich habe festgestellt, dass das letzte RowItem (UserControl-Höhe) eine unrealistische Höhe besitzt, obwohl ich vorgebe, wie die Höhe zu sein hat. Die Werte lassen sich nicht verändern.


    Fragestellung:
    Wie kann man während der Laufzeit die GesamtHöhe des Tablelayoutpanels verändern. Bei mir ensteht immer ein extremes Flackern das sich nicht mehr erholt, wenn ich den Wert me.Height in tlp verändere. Mit OnPaint bringe ich das einfach nicht in den Griff.

    Ich wäre froh um jede Hilfe


    Danke.


    Freundliche Grüsse


    exc-jdbi
    Attached Files

  • #2
    Die Sache sieht recht kompliziert aus, kannst du das Ganze nicht mit den Eigenschaften "Dock", "AutoSize", "Anchor", "MinimumSize", "MaximumSize" lösen?
    Man kann in einem TableLayoutPanel auch weitere TableLayoutPanel's einfügen (evtl. genügt auch ein einfaches Panel).

    Dieses ganze "OnResize - Zeugs" habe ich seit Visual Basic 6 nicht mehr verwendet und seitdem auch nie wieder benötigt.

    Nimm einfach mal den Desinger und füge alle Elemente manuell so ein wie du sie haben möchtest - natürlich nur 2-3 Zeilen anstatt alle 20, das sollte reichen.
    Ich wette, dass du die Events "OnPaint", "OnResize" und "OnScroll" nicht verwenden musst.

    Gruss
    Zuletzt editiert von Wernfried; 09.07.2014, 13:31.

    Comment


    • #3
      Die Lösung war ein Panel mit TLP als "RowItems"

      Guten Abend Wernfried

      Meinen Dank für die Antwort.

      Ich hab das Ganze jetzt mit einem Panel gelöst, und es funktioniert einwandfrei.

      Das TLP nutze ich jetzt als eine ganze Zeile. So komme ich immer noch in den Genuss der TLP-Eigenschaften, beim z.B. Vergrössern des Formfenster.

      Ich habe übrigends gestern Abend noch kurz im Internet nachgeschaut, und das Problem ist in irgendeiner Form bekannt. Ich selber habe das TLP schon viele Male verwendet, jedoch nur für "statische" Anwendungen. Also ohne konstruktive Veränderung des Grundaufbaus während der Laufzeit.

      So wie ich es aber im Beispiel oben nutze, kann es vorkommen, dass das TLP während der Laufzeit gesperrt ist. Das letzte RowItem dient das quasi als Kompensierung der restlichen Nutzfläche. Das sieht dann wie in meinem Fall gar nicht schön aus.

      Ich möchte jedoch deinen Tip auch noch in Erwägung ziehen, und es zu einem späteren Zeitpunkt ausprobieren.

      Sofern jemand Interesse hat, wie ich das mit dem Panel gelöst habe, bitte im PM melden.

      Freundliche Grüsse

      exc-jdbi

      Comment

      Working...
      X