2010-10-19 5 views
8

¿Es posible usar el motor de diseño de WinForms para configurar un formulario de tal manera que la altura se ajuste completamente automáticamente para ajustarse al contenido, pero el ancho sería ajustable por el usuario?WinForms autoejecutable verticalmente mientras deja el ancho ajustable?

Como ejemplo, considere la siguiente forma algo artificial:

  • TLP: TableLayoutPanel, con 1 fila y 2 columnas.
  • label1: Label, que figura en la columna de la izquierda. Establezca Text en algo largo, AutoSize en falso, Dock en Rellenar.
  • button1: Botón, que se encuentra en la columna de la derecha. Establezca AutoSize en verdadero.
  • Ahora configure la fila en "Tamaño automático", la primera columna en "100%" y la segunda columna en "Tamaño automático".
  • Finalmente, establezca TLP como verdadero, AutoSizeMode para GrowAndShrink.

En este punto, el TLP podría razonablemente cambiar el tamaño horizontalmente, pero WinForms no parece permitir esto.

La idea es que el formulario que contiene este TLP crezca o se contraiga verticalmente según el ancho, que el usuario puede cambiar cambiando el tamaño de la ventana como de costumbre.

Respuesta

6

Esperamos que ya tenga la solución. Pero en caso de que alguien tenga una misma consulta, puede establecer el ancho de la propiedad de tamaño máximo en el ancho real del formulario y la altura de MaximumSize en 0.

1

Esto es completamente posible. Para hacer esto, debe sobrescribir SetBoundsCore en su formulario. En esto, puede controlar la altura de manera que no cambie cuando un cambio de tamaño lo desee. Simplemente almacene la altura que desea que sea en una variable y luego haga que su anulación siempre la establezca como tal. De esta forma, cuando ajuste automáticamente la altura, guarde el nuevo valor de altura antes de configurar el formulario Height y SetBoundsCore respetará esa nueva altura.

Cuestiones relacionadas