2009-09-03 14 views
9

Tengo un WinForm que contiene un bindingNavigator en la parte superior y un splitContainer con dos paneles horisontal debajo. El splitContainer llena el espacio no ocupado por el bindingNavigator.Altura del panel fijo en un contenedor dividido

Me gustaría establecer el panel inferior a una altura fija de, digamos 100 píxeles, y hacer que el panel superior llene el resto del espacio.

Este es mi código actual:

kundeteamSplitContainer.SplitterDistance = kundeteamSplitContainer.Height - 100; 

yo habría pensado que esto sería establecer la distancia divisor dinámicamente a 100 píxeles menos de la altura total en todo momento, por lo que el panel inferior ocupar el 100 restante pixeles Sin embargo, esto no funciona como se esperaba, ya que el panel inferior cambia de tamaño cuando modifico el tamaño del formulario en tiempo de ejecución.

EDITAR: Me estoy quedando con el splitContainer si es posible. Tengo un montón de funcionalidades relacionadas con ocultar/mostrar el panel inferior ya implementado y no quiero volver a hacer ese trabajo.

Respuesta

17

Como se ha señalado por Lee:

establecer la propiedad FixedPanel al panel que desea seguir siendo el mismo tamaño.

Esto funciona así:

teamSplitContainer.SplitterDistance = teamSplitContainer.Height - 100; 
teamSplitContainer.FixedPanel = FixedPanel.Panel2; 
2

Utilizaría un TableLayoutControl para algo como esto en lugar de un Splitter.

+0

Bueno ... bien puede ser, pero no estoy cambiando en este momento. Mis colegas más experimentados me dijeron que usara un divisor, por lo que me apegaré a él por ahora. – Sakkle

+0

Bastante justo. Solo utilicé la versión VS2005 y la encontré demasiado defectuosa. – MartW

+0

@Sakkle: Pero si el único requisito es mantener el código de ocultación del panel, puede establecer la altura de la fila TableLayoutPanel en 0 y funcionaría más o menos lo mismo ... –

26

Establezca la propiedad FixedPanel en el panel que desea que permanezca del mismo tamaño.

+0

Gracias ... esto me puso en el camino correcto – Sakkle

0

Si sólo desea mostrar y desactivar el panel (sin cambio de tamaño automático, sin cambio de tamaño por el usuario) añadir al código por Sakkle esta línea:

teamSplitContainer.IsSplitterFixed = true; 
2

La mejor manera se puede establecer la propiedad isSplitterFixed en "True"

Property Window for splitcontainer

Cuestiones relacionadas