Pregunta

Tengo una aplicación WinForms que le permite editar documentos. Cada documento está hecho de capítulos y cada capítulo tiene una colección de bloques RTF. Los bloques RTF se cargan en un PanelControl usando Dock = DockStyle.Top.

El problema es que cuando la altura total de un capítulo se vuelve demasiado grande (estimación> 32768 píxeles), los bloques inferiores no se acoplan correctamente: aparecen una entre sí. Al intentar aislar el problema, noté que esto también sucede con controles más simples como un LabelControl.

Las cosas que probé son métodos como Refresh(), Invalidate() y PerformLayout: lo harán no Resuelve este problema.

Qué lo hace La ayuda es cambiar el tamaño del formulario. Después de eso, todos los controles se presentan correctamente.

¿Alguien puede ayudar a resolver esto sin cambiar el tamaño del formulario?

Adjunto un proyecto de demostración simple Eso ilustra el problema.

screenshot

¿Fue útil?

Solución

De mi comentario anterior (parece ser realmente el problema aquí):

WinForms (y el GDI en general) a menudo se comporta de manera impredecible si se trata de usar coordenadas fuera de un rango de 16 bits. Intenta evitar eso. En el rango de problemas posibles, las cosas simplemente no se dibujan en absoluto, las concepciones de desbordamiento en posiciones de código inesperadas, etc.

Otros consejos

Si es posible que tome la decisión de cambiar este diseño, le sugiero que adopte otro enfoque para mostrar/editar los capítulos de documentos con algún tipo de paginación o colapsar bloques RTF en un menú y mostrar solo corriente.

Verá ... tiene sentido que el valor de altura sea un valor entero de 16 bits. Una pantalla es mucho más pequeña que esto. A medida que la altura del panel aumenta a un tamaño tan alto. Verá que usar barra de desplazamiento se volverá muy muy sensata ... y no es algo bueno.

El contenido con el tamaño 2x, 3x, 5x se desplaza es utilizable para el usuario. Pero desplazar un contenido con la altura (~ 32768) del menos (usando un monitor de resolución de buen maximizado) en caso óptimo 32x El tamaño de la ventana es muy incómodo.

Además, creo que la productividad del usuario disminuirá debido a la dificultad del cerebro para localizar "cosas" en una colección creciente de "cosas".

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top