Frage

Ich habe eine WinForms -Anwendung, mit der Sie Dokumente bearbeiten können. Jedes Dokument besteht aus Kapiteln und jedes Kapitel enthält eine Sammlung von RTF -Blöcken. Die RTF -Blöcke sind in a geladen PanelControl Verwendung Dock = DockStyle.Top.

Das Problem ist, dass, wenn die Gesamthöhe eines Kapitels zu groß wird (Schätzung> 32768 Pixel), die unteren Blöcke nicht ordnungsgemäß angedockt werden: Sie erscheinen hintereinander. Beim Versuch, das Problem zu isolieren, bemerkte ich, dass dies auch mit einfacheren Steuerelementen wie a geschieht LabelControl.

Dinge, die ich ausprobiert habe, sind Methoden wie Refresh(), Invalidate() und PerformLayout: Sie werden nicht Löse das Problem.

Was tut Hilfe ist die Größe des Formulars. Danach werden alle Kontrollen korrekt angegeben.

Kann jemand helfen, wie man dies lösen kann, ohne die Größe des Formulars zu ändern?

Angehängt ein Einfache Demo-Projekt Das veranschaulicht das Problem.

screenshot

War es hilfreich?

Lösung

Aus meinem obigen Kommentar (scheint hier wirklich das Problem zu sein):

WinForms (und der GDI im Allgemeinen) verhalten sich oft unvorhersehbar, wenn man versucht, Koordinaten außerhalb eines 16 -Bit -Bereichs zu verwenden. Versuchen Sie das zu vermeiden. In der Reihe möglicher Probleme werden Dinge, die überhaupt nicht gezogen werden, überlastet, überlaufend in unerwarteten Codepositionen usw.

Andere Tipps

Wenn es Ihnen möglich ist, dieses Layout zu ändern, empfehle ich Ihnen, einen weiteren Ansatz beim Anzeigen/Bearbeiten der Dokumentekapitel mit einer Art Pagination oder einem Zusammenbruch von RTF -Blöcken in ein Menü zu verfolgen und nur aktuell anzuzeigen.

Sie sehen .. Es macht einen Sinn, dass der Höhenwert ein ganzzahliger 16-Bit-Wert ist. Ein Bildschirm ist viel winziger als dieser. Mit zunehmender Größe der Panel zu einer so hohen Größe. Sie sehen, dass die Verwendung von Bildlaufleisten sehr sehr vernünftig wird. Und es ist keine gute Sache.

Inhalt mit Größe 2x, 3x und 5x, die gescrollt werden, ist für den Benutzer verwendet. Scrollen Sie jedoch einen Inhalt mit Höhe (~ 32768) von mindestens (unter Verwendung maximiertem Fenster mit guter Auflösung). In optimalem Fall 32x ist die Größe des Fensters sehr unangenehm.

Außerdem glaube ich, dass die Produktivität des Benutzers aufgrund der Hirnschwierigkeit abnimmt, "Dinge" in einer zunehmenden Sammlung von "Dingen" zu lokalisieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top