2011-09-21 147 views
8

Tengo un DevExpress LayoutControl configurado dentro de un formulario de WinForms. Me gustaría que el LayoutControl cambie el tamaño de horizontally cuando se redimensiona el formulario, o al menos que el usuario modifique el tamaño del LayoutControl.Cómo cambiar el tamaño de los controles de DevExpress

He visto en la página de DevExpress sugerencias para cambiar la propiedad SizeConstraintsType por "default". También he intentado anclar el control a la derecha e izquierda de su padre. También he trabajado para aumentar el MaxSize. ¿Alguien sabe como hacer esto?

Básicamente quiero hacer el equivalente a (en HTML) <table width=100%>. ¿Alguien sabe como hacer esto?

¡Gracias de antemano!

Respuesta

13

Developer's Express LayoutControl es una herramienta muy buena, pero tiene un par de trampas.

El propio LayoutControl debe cambiar de tamaño muy bien acoplado dentro de cualquier control de contenedor como un formulario, un control de usuario o un control de panel. En muchos casos, el control de diseño es una de las primeras cosas que le pones a tu formulario/control porque todo lo demás entra dentro para ser "deshabilitado". Por lo tanto, debe establecer la propiedad "Dock" del control de diseño en "Fill" o en el borde deseado del formulario/control al que desea acoplar.

El "gotcha" aquí es que la lógica interna del control de disposición puede limitar sus dimensiones externas o cualquier elemento interno si es capaz de hacerlo y los elementos de diseño quieren tener un tamaño particular. Esto es realmente más simple de lo que parece.

Por ejemplo, digamos que tiene un control de etiqueta dentro de su control de diseño. Un control de etiqueta por defecto se ajustará a sí mismo para ajustarse al ancho de su texto. A su vez, el control de diseño intentará acomodar el tamaño deseado de la etiqueta al encoger/hacer crecer el tamaño del elemento de diseño. Así que este control de una etiqueta podría estar jugando con el cambio de tamaño de los controles de diseño. Elegí la etiqueta como ejemplo porque es el control más común para arruinar su diseño.

La forma en que lo soluciono es cambiar la propiedad "AutoSizeMode" de la etiqueta a "vertical" (si desea ajuste de texto) o "ninguno" (si desea forzarlo sea del tamaño que el control de diseño quiere que sea) Esto libera el control de diseño para tomar decisiones de ancho.

Además, si permite que el usuario final cambie el tamaño del control de disposición (por ejemplo, con DevExpress 'SplitterControl), el diseño volverá a intentar su tamaño óptimo y no permitirá que SplitterControl se aleje de este tamaño óptimo si otros controles se cambian de tamaño más fácilmente (como una grilla, árbol, lista, etc.). En este caso, agregar un "EmptySpaceItem" al control de diseño le permitirá llenar cualquier espacio vacío al cambiar el tamaño. Para agregar EmptySpaceItem a su diseño, haga clic con el botón secundario en el control de diseño en el diseñador de Visual Studio y seleccione "Personalizar diseño". El cuadro de diálogo personalizar tendrá una lista de elementos que puede arrastrar al control de diseño, incluido EmptySpaceItem.

+0

+1, una vez que lo use durante un tiempo, aprenderá los trucos. Se agrava cuando se ramifica en las bibliotecas de formularios web de ASP.net y usa FormLayout. Esa cosa fue una pesadilla para aprender los trucos de tamaño. – Mohgeroth

Cuestiones relacionadas