Domanda

Ho un'applicazione Winforms che ti consente di modificare i documenti. Ogni documento è realizzato in capitoli e ogni capitolo contiene una raccolta di blocchi RTF. I blocchi RTF sono caricati in a PanelControl usando Dock = DockStyle.Top.

Il problema è che quando l'altezza totale di un capitolo diventa troppo grande (stima> 32768 pixel) i blocchi inferiori non sono agganciati correttamente: appaiono dietro l'uno all'altro. Quando ho provato a isolare il problema ho notato che ciò accade anche con controlli più semplici come un LabelControl.

Le cose che ho provato sono metodi come Refresh(), Invalidate() e PerformLayout: lo faranno non risolvere il problema.

Che cosa fa L'aiuto è ridimensionare il modulo. Dopodiché tutti i controlli sono disposti correttamente.

Qualcuno può aiutare su come risolverlo senza ridimensionare il modulo?

Allegato un semplice demo-project Ciò illustra il problema.

screenshot

È stato utile?

Soluzione

Dal mio commento sopra (sembra davvero essere il problema qui):

Winforms (e il GDI in generale) si sta comportando in modo imprevedibile se si tenta di utilizzare coordinate al di fuori di un intervallo di 16 bit. Cerca di evitarlo. Nella gamma di possibili problemi ci sono cose che non vengono affatto disegnate, eccezioni eccessive in posizioni inaspettate del codice ecc.

Altri suggerimenti

Se è possibile prendere una decisione di modificare questo layout, ti suggerisco di adottare un altro approccio a mostrare/modificare i capitoli dei documenti con una sorta di paginazione o di collassare i blocchi RTF in un menu e mostrare solo corrente.

Vedi .. ha senso che il valore di altezza sia un valore intero a 16 bit. Uno schermo è molto più piccolo di questo. Man mano che l'altezza del pannello aumenta a una dimensione così elevata. Vedi che l'uso della barra di scorrimento diventerà molto sensibile .. e non è una buona cosa.

Il contenuto con dimensioni 2x, 3x, 5x viene sfuggito all'utente. Ma scorrere un contenuto con altezza (~ 32768) di almeno (usando un monitor di buona risoluzione con la finestra massimizzata) nel caso ottimale 32x La dimensione della finestra è molto scomoda.

Inoltre, credo che la produttività dell'utente diminuirà a causa della difficoltà del cervello a individuare "cose" in una crescente raccolta di "cose".

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top