Aplicable a controles derivados de ScrollableControl como por ejemplo
UserControl.
La propiedad AutoScrollPosition es de lectura y escritura, pero en la
documentación solo hay ejemplos para su uso como propiedad de lectura.
Si asigno de manera intuitiva a AutoScrollPosition un nuevo valor por
programa para desplazar la vista, obtengo un comportamiento algo extraño.
Analizando en debug veo que AutoScrollPosition devuelve valores negativos,
pero ignora valores negativos cuando le asigno un nuevo valor.
Así pues con el siguiente código consigo el el objetivo deseado:
Public Sub Scroll(ByVal x As Integer, ByVal y As Integer)
Dim xx As Integer = -AutoScrollPosition.X + x
Dim yy As Integer = -AutoScrollPosition.Y + y
'Comentadas por innecesarias, la capa subyaciente ya hace las
comprobaciones necesarias
'If xx < 0 Then xx = 0
'If yy < 0 Then yy = 0
AutoScrollPosition = New Point(xx, yy)
End Sub
Para Keys.Up, Keys.Left utilizo valores negativos de x,y que incrementan el
desplazamiento y viceversa para Keys.Right,Keys.Up.
Nota.: para un correcto funcionamiento es necesario asignar a
AutoScrollMinSize el valor apropiado en función del tamaño virtual a
desplazar.
Leer las respuestas