2010-01-12 29 views
12

Tengo un panel con una imagen en él. Cuando el contenido de la ventana de imagen es demasiado grande, quiero barras de desplazamiento. Establecí el desplazamiento automático establecido en verdadero en el panel. Pero cuando el contenido del cuadro de imagen es más grande, la altura del panel/cuadro de imagen no muestra barras de desplazamiento.C# El desplazamiento automático del panel no funciona

Mi panel está anclado arriba, izquierda, abajo, derecha. El cuadro de imagen también está anclado arriba, izquierda, abajo, derecha.

Respuesta

20

Deberá establecer la propiedad SizeMode en AutoSize, lo que hace que PictureBox cambie automáticamente el tamaño de la imagen.

Y creo que deberías soltar los anclajes y anclar únicamente en la esquina superior izquierda. El resto se ocupa automáticamente del panel. Porque, de lo contrario, PictureBox probablemente honraría los anclajes, ya que no podría redimensionarse más grande que el panel que contiene, lo que llevaría a que no haya barras de desplazamiento nuevamente.

+3

"Creo que debería dejar caer las anclas y la única ancla a la parte superior izquierda" salvar mi día, Ty! –

6

La imagen no se debe anclar abajo ni a la derecha. En cambio, cambie el tamaño del contenido para mostrar.

9

De MSDN:

En la actualidad existe una limitación en Windows Forms que evita todas las clases derivadas de ScrollableControl de actuar correctamente cuando ambos RightToLeft está activado y AutoScroll se establece en True. Por ejemplo, supongamos que coloca un control como Panel, o una clase de contenedor derivada de Panel (como FlowLayoutPanel o TableLayoutPanel) en su formulario. Si establece AutoScroll en el contenedor en True y luego establece la propiedad Anchor en uno o más de los controles dentro del contenedor en Right, entonces no aparece ninguna barra de desplazamiento. La clase derivada de ScrollableControl actúa como si AutoScroll se establecieran en False.

+3

¿Se hace alguna mención a 'RightToLeft'? – Ashe

+0

Sí, lee con atención. – serhio

+2

¡Quise decir en la pregunta! No lo estoy viendo Esta respuesta solo se aplica cuando tanto 'RightToLeft' como' AutoScroll' están habilitados ... ¿pero no creo que la pregunta describa tal escenario? – Ashe

-1

Cambie el estilo de borde del panel a fijo fijo y luego la propiedad Auto Scroll del panel a True.

1

Para mí continuación Código ayudaron en la adición de barra de desplazamiento:

Panel2.Controls.Clear(); 
Panel2.AutoScroll = false; 
Panel2.VerticalScroll.Enabled = true; 
Panel2.VerticalScroll.Visible = true; 

Panel2.AutoScroll = true; 
+0

Se siente muy raro, pero en realidad fue el truco en una situación muy especial. Darn side-effects :-) –

Cuestiones relacionadas