Question

J'ai une application WinForms qui vous permet de modifier des documents. Chaque document est composé de chapitres et chaque chapitre détient une collection de blocs RTF. Les blocs RTF sont chargés dans un PanelControl utilisant Dock = DockStyle.Top.

Le problème est que lorsque la hauteur totale d'un chapitre devient trop grande (estimation> 32768 pixels), les blocs inférieurs ne sont pas correctement ancrés: ils apparaissent les uns contre les autres. Lorsque vous essayez d'isoler le problème, j'ai remarqué que cela se produit également avec des contrôles plus simples comme un LabelControl.

Les choses que j'ai essayées sont des méthodes comme Refresh(), Invalidate() et PerformLayout: elles vont ne pas résoudre le problème.

Quoi Est-ce que L'aide est de redimensionner le formulaire. Après cela, tous les contrôles sont disposés correctement.

Quelqu'un peut-il aider à résoudre ce problème sans redimensionner le formulaire?

Attaché un simple projection de démonstration Cela illustre le problème.

screenshot

Était-ce utile?

La solution

De mon commentaire ci-dessus (semble vraiment être le problème ici):

WinForms (et le GDI en général) se comporte souvent de manière imprévisible si l'on essaie d'utiliser des coordonnées en dehors d'une plage de 16 bits. Essayez d'éviter cela. Dans la gamme des problèmes possibles, les choses ne sont tout simplement pas dessinées du tout, les exceptions de débordement à des positions de code inattendues, etc.

Autres conseils

S'il vous est possible de prendre la décision de modifier cette mise en page, je vous suggère d'adopter une autre approche sur l'affichage / modifier les chapitres des documents avec une sorte de pagination ou d'effondrement des blocs RTF dans un menu et de montrer uniquement le courant.

Vous voyez .. il est logique que la valeur de hauteur soit une valeur entière 16 bits. Un écran est bien plus petit que cela. À mesure que la hauteur du panneau augmente à une taille aussi élevée. Vous voyez que l'utilisation de la barre de défilement deviendra très très sensée .. et ce n'est pas une bonne chose.

Le contenu de taille 2x, 3x, 5x étant défilé est utilisable pour l'utilisateur. Mais faire défiler un contenu avec une hauteur (~ 32768) d'au moins (en utilisant un moniteur de bonne résolution avec une fenêtre maximisée) dans le cas optimal 32x La taille de la fenêtre est très inconfortable.

De plus, je crois que la productivité de l'utilisateur diminuera en raison de la difficulté du cerveau à localiser les «choses» dans une collection croissante de «choses».

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top