TableLayoutPanel anidado se muestra con espacios vacíos grandes en una aplicación Windows Forms en monitores de PPP altos

En este artículo se resuelve el problema en el que TableLayoutPanel anidado se muestra con grandes espacios vacíos en una aplicación Windows Forms en monitores de ppp altos.

Versión del producto original:   Microsoft .NET Framework
Número KB original:   3044516

Síntomas

Cuando se ejecuta una aplicación de Windows Forms que contiene controles TableLayoutPanel anidados y estos diseños a su vez contienen controles con propiedades de márgenes distintos de cero o padding en un sistema operativo con alta resolución de visualización habilitada, los márgenes y el relleno de dichos controles se escalarán exponencialmente para el número de veces que se anidan los controles TableLayoutPanel. Esto da como resultado que la aplicación muestre controles con espacios vacíos desproporcionadamente grandes.

Causa

La implementación actual de TableLayoutPanel realiza un paso de escalado independiente para cada nivel de anidamiento. Cuando la resolución de la pantalla se establece en el 100 % que no es un problema, pero con resoluciones más grandes, el escalado es acumulativo y da como resultado números inesperadamente grandes. El problema solo afecta a las propiedades Margins o Padding de los controles dentro de TableLayoutPanel.

Solución

Para resolver este problema, establezca Margins o Padding en cero y use formas alternativas de lograr espacio entre controles o evitar anidar controles TableLayoutPanel.

Más información

El control TableLayoutPanel simplifica el posicionamiento y el tamaño de los formularios de windows al organizarlos en diseños arbitrarios de tipo tabla. Cuando el control TableLayoutPanel calcula los tamaños adecuados para cada control del diseño, TableLayoutPanel escalará los márgenes y cualquier relleno circundante del control de acuerdo con la configuración de PPP actual para que la apariencia general del diseño permanezca igual independientemente de la resolución. Cuando uno de estos controles es otro TableLayoutPanel anidado, el escalado se aplicará sobre lo que estos controles ya han calculado sus márgenes y el relleno para ser. Esto da como resultado los márgenes grandes inesperados y el relleno.

Para obtener más información sobre cómo diseñar el diseño de Windows Forms, vea Designing the layout of Windows Forms by using a TableLayoutPanel.