2011-03-31 19 views
9

tengo un panel en mis winforms y en él cargo algunos controles de usuario.panel autoscroll en la parte inferior

me gustaría desplazarme automáticamente hasta la parte inferior del panel (como se llena mi panel) cada vez que se agrega un nuevo control de usuario. Como lo puedo hacer ?

Respuesta

18

Puede hacerlo mediante el establecimiento de la VerticalScroll del panel, pero creo que sería mejor usar ScrollControlIntoView lugar.

private void panel1_ControlAdded(object sender, ControlEventArgs e) 
{ 
    panel1.ScrollControlIntoView(e.Control); 
} 

¡Buena suerte!

+1

Esto parece funcionar ... una cosa que encontré raro, es Mientras que los otros controles en el panel se mueven hacia arriba en consecuencia, TableLayoutPanels que son secundarios para el panel de desplazamiento NO se mueve hacia arriba. Tienes que moverlos manualmente, programáticamente después de desplazarte. Impar. – eidylon

18

Puede usar ScrollControlIntoView y pasar el control que agregó por última vez.

Una solución alternativa sería:

panel.VerticalScroll.Value = panel.VerticalScroll.Maximum 
+8

Cualquiera que intente esta solución y que tenga el problema de que las barras de desplazamiento no se actualicen, debe llamar a PerformLayout() después de establecer el valor. Problema y solución confirmados aquí: http://stackoverflow.com/questions/5565653/scrollbar-does-not-update-on-changing-the-scroll-value – Rob

0

Encontré que la adición continua de controles al panel en incrementos verticales se vería afectada negativamente cada vez que un usuario hubiera desplazado el panel hacia arriba o hacia abajo. He utilizado la punta de Homam arriba, y encontró lo siguiente para trabajar bien:

panel1.VerticalScroll.Value = 0; 

// Creating and adding a TextBox, tb, to the panel 

panel1.ScrollControlIntoView(tb); 

Así que, primero, que vaya a la parte superior con el fin de utilizar posiciones verticales absolutas para mis cuadros de texto, luego colocar la caja de texto, y finalmente, me aseguro de que el cuadro de texto recién creado aparezca a la vista.

Cuestiones relacionadas