Al configurar VerticalScroll.Value
en un Panel
con establecido en true
, la posición de desplazamiento cambia en consecuencia, pero la posición del control no lo hace. ¿Debo actualizar la barra de desplazamiento de alguna manera (Invalidate(true)
en el panel no funciona)? ¿Algunas ideas?La barra de desplazamiento no se actualiza al cambiar el valor de desplazamiento
Respuesta
intentar llamar a .PerformLayout();
Gracias por la punta .PerformLayout()
!
No fue suficiente en mi caso, estoy configurando el VerticalScroll.Value dentro del controlador de eventos Form.Shown
, y por alguna razón tuve que agregar una instrucción DoEvents
de antemano para que el desplazamiento funcionara.
Aquí es mi manejador de eventos Shown
:
Private Sub MyForm_Shown(sender As System.Object, e As System.EventArgs) Handles Me.Shown
System.Windows.Forms.Application.DoEvents()
ScrollPanel.VerticalScroll.Value = ScrollPanel.VerticalScroll.Maximum
ScrollPanel.PerformLayout()
End Sub
de control ScrollPanel es de tipo System.Windows.Forms.Panel
.
Sin la línea Application.DoEvents()
, la configuración del valor del desplazamiento vertical se ignoró por completo.
Pensé que podría ser útil para otra persona.
Tuve exactamente el mismo problema al intentar desplazar automáticamente un panel que contiene un cuadro de imagen.
Encontré otro método para hacerlo funcionar. Incrementar el valor de desplazamiento en dos ocasiones:
ScrollPanel.VerticalScroll.Value += AmountToScroll
ScrollPanel.VerticalScroll.Value += AmountToScroll
incrementar el valor de la primera vez hace que el cuadro de imagen para desplazarse dentro del panel, pero el .Value no cambia y el pulgar no se mueve.
Al aumentar el valor por segunda vez, se incrementa el desplazamiento VerticalScroll.Value, moviendo el pulgar, pero el cuadro de imagen no se desplaza nuevamente.
Parece un error para mí. Seguramente tanto el desplazamiento del cuadro de imagen como el incremento del valor .Valor y el movimiento del pulgar deberían ocurrir después de la primera línea de código.
Me encontré con algo casi idéntico donde tengo un PictureBox (que muestra un gráfico) dentro de un panel con barras de desplazamiento, y quiero acercar o alejar manteniendo la posición del puntero del mouse "aparentemente" estacionaria. Reubicando el PictureBox dentro del panel para hacer esto, se cancela la sincronización con las barras de desplazamiento, y luego, al desplazarse con las barras de desplazamiento, no se mostrará el área completa del PictureBox. La solución es lograr el movimiento asignando un valor calculado al panel. Propiedades horizontalmente Desplazamiento.Valor y/panel.VerticalScroll.Value. Pero eso solo no es suficiente: una de estas dos soluciones se requiere para hacer que la aplicación se comporte como fue diseñado:
solución de Kman arriba:
panel.HorizontalScroll.Value = computed_value panel.PerformLayout()
o solución de JJMcLellan arriba: en mi caso , asignando el valor calculado dos veces, por ejemplo:
panel.HorizontalScroll.Value = computed_value panel.HorizontalScroll.Value = computed_value
Cualquiera de estos parece tener los mismos resultados finales. Dado que el n. ° 2 anterior hace que parezca un error, y el n. ° 1 parece (con suerte) estar por diseño de Microsoft (?), Terminé utilizando el n. ° 1 en mi aplicación. Solo quería confirmar que ambos funcionan en un entorno VB.NET.
- 1. ¿Cambiar la posición de la barra de desplazamiento en TextBox?
- 2. Cómo ajustar/cambiar el ancho de la barra de desplazamiento
- 3. NSTextView no se actualiza correctamente en el desplazamiento
- 4. [WPF]: El estilo de una barra de desplazamiento, pero la barra de desplazamiento ListView no está afectado por el estilo
- 5. Desplazamiento de la barra de desplazamiento del navegador
- 6. Desplazamiento infinito Jquery - barra de desplazamiento en div no cuerpo
- 7. Barra de desplazamiento Textarea
- 8. Agregar una barra de desplazamiento al WrapPanel
- 9. Barra de desplazamiento personalizada UITableView
- 10. Cambiar el ancho de una barra de desplazamiento
- 11. Establecer grosor de la barra de desplazamiento
- 12. ¿Cómo cambiar la barra de desplazamiento al diseño personalizado? (evite usar el aspecto predeterminado del navegador)
- 13. Cambiar el desplazamiento de un div oculto
- 14. Internet Explorer crea barra de desplazamiento horizontal para el ancho de barra de desplazamiento vertical
- 15. Animate.CSS ¿Agregar barra de desplazamiento?
- 16. Agregar barra de desplazamiento a la tabla
- 17. ¿Cómo agregar la barra de desplazamiento al diseño relativo?
- 18. CSS: la barra de desplazamiento para el eje y causa la barra de desplazamiento para el eje x
- 19. jqGrid barra de desplazamiento horizontal
- 20. Ocultar la barra de desplazamiento en WebView
- 21. ¿Cómo se activa la barra de desplazamiento de Highcharts?
- 22. La barra de desplazamiento no aparece en la página web
- 23. Aumentar autocompletar la barra de desplazamiento tamaño
- 24. Deshabilitar la barra de desplazamiento del navegador
- 25. ¿Cómo calcular el ancho de la barra de desplazamiento?
- 26. Cómo mostrar siempre la barra de desplazamiento
- 27. ¿Un evento de barra de desplazamiento al desplazarse?
- 28. problema CSS - barra de desplazamiento horizontal se esconde el contenido
- 29. Cambio de la posición de la barra de desplazamiento
- 30. ¿Cómo se visualiza la barra de desplazamiento para UITextView siempre?
Trabajos. Muchas gracias. – EricSchaefer
Sí, puedo confirmar, esto funciona sin problemas para mí en 3 controles diferentes. Gracias. – Rob
Gran solución. –