2010-07-26 48 views
23

Parece que no puedo encontrar la forma de mantener fijo el ancho de un panel en un Contenedor dividido en un WinForm.¿Mantiene el ancho fijo del panel de un contenedor dividido?

¿Alguna sugerencia?

+0

si desea que se fije el ancho, entonces ¿por qué usar un contenedor dividido? Puedes usar dos paneles. O probablemente sea mejor utilizar las propiedades de anclaje de cada uno de los controles. –

+0

¿Los contenedores divididos están diseñados específicamente para tener paneles líquidos? doh! – sooprise

Respuesta

7

Si mantiene el tamaño de un panel fijo, no hay una forma lógica de mover el divisor. Como no puedes mover el divisor, ya no tiene sentido usar un SplitContainer. Use dos controles del Panel.

+2

O un TableLayoutPanel podría ser más adecuado en lugar de los 2 paneles separados y virtualmente independientes. –

+0

gracias por dirigir en la dirección correcta, realmente no tiene sentido tener splicontainer en este caso :) – Prokurors

+1

No estoy de acuerdo. Tomemos como ejemplo el caso en el que he incrustado contenedores divididos. Tengo 3 segmentos, 2 de los cuales quiero que se puedan cambiar de tamaño (piense en 3 columnas: una columna de datos a la izquierda, una columna de datos a la derecha y una columna de botón de herramientas en el medio con ancho fijo). Entonces, si solo uso un contenedor dividido, no puedo colocar un panel en el lado derecho y acoplar un control Listbox. El Listbox termina detrás del panel y parcialmente oscurecido. –

72

propiedad SplitterPanel.FixedPanel - establece uno de los paneles de tamaño fijo

propiedad SplitterPanel.IsSplitterFixed - establecido en true

+15

¡Esta debería ser la respuesta correcta! –

+0

Tenga en cuenta que cuando el tamaño total del SplitContainer sea demasiado pequeño, el panel fijo se encogerá para ajustarse y NO VOLVERÁ al tamaño "fijo" a menos que se ocupe de esto en un evento SizeChanged ... –

+0

won 't min. el tamaño del panel evita este problema? – gg89

8

el fin de hacer panel1 fijo En las propiedades de la SplitContainer, establezca la propiedad FixedPanel-Panel1.

Luego, configure SplitDistance y Panel1MinSize con el mismo valor.

+0

Gracias, funciona bien ... –

+0

Gracias, eso ayuda. Una corrección, la propiedad es 'SplitterDistance' y no SplitDistance. Además, tuve que modificar el código detrás del formulario, porque las propiedades no eran accesibles en la ventana de Propiedades en el IDE, ni a través del código en los eventos de Formulario (por ejemplo, Carga de Formulario). –

+0

Lo llevo de vuelta, eso no funcionó. –

1
// from Microsoft documentation similar to Dmitri answer::::::::::: 
// if make panel1 fixed: 
mySplitContainer.FixPanel = System.Windows.Forms.FixedPanel.Panel1; 

// if make panel2 fixed (in this case can't use fixed splitter distance): 
mySplitContainer.FixPanel = System.Windows.Forms.FixedPanel.Panel2; 

// and to be safe set the appropriate panel min size for the splitcontainer too; 
0

Depende de lo que desee.

FixedPanel vamos a cambiar el tamaño del panel, pero no cambiará el tamaño automáticamente cuando se cambia el tamaño del control.

IsSplitterFixed desactivará el divisor, pero seguirá cambiando de tamaño automáticamente cuando se cambie el tamaño del control.

Si utiliza ambos, entonces estará totalmente solucionado. Pero entonces es mejor que uses dos paneles como dijo Hans.

Cuestiones relacionadas