/ / Desplácese por un control de usuario mientras el temporizador se está ejecutando - vb.net, winforms, combobox

Desplácese por un control de usuario mientras se ejecuta el temporizador: vb.net, winforms, combobox

Cada vez que hago clic en el área del control de usuario, resalta el cuadro combinado, por lo que si intento desplazarme hacia la parte inferior de la pantalla, solo se desplaza a través del cuadro combinado.

Traté de poner somelabel.focus() en el evento click para el control del usuario. Este tipo de trabajos. Sin embargo, esto no me permite desplazarme a una parte del control donde somelabel no es visible, lo que me parece un poco extraño. Obviamente necesito poder desplazarme hasta el final del control de usuario.

Información adicional: este es un proyecto winforms, y el control del usuario se ejecuta en un temporizador, donde los únicos controles son combobox y algo labels que tienen su .text propiedad actualizada cada vez que el temporizador se repite.

ACTUALIZAR: Intenté desactivar el temporizador, y parece que después de cambiar el enfoque a una de las etiquetas, ahora puedo desplazarme hasta el final de la página. Entonces parece que es un problema con el temporizador.

Aquí hay un código que replica el problema. Si hace clic en el panel, se enfoca, pero no le permitirá desplazarse con la rueda de desplazamiento. Volverá la parte superior del panel a la parte superior de la pantalla. Sin embargo, si no enciende el temporizador, puede desplazarse libremente.

Public i As Integer
Public iString As String

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
iString = i.ToString()
Label1.Text = iString
Label2.Text = iString
Label3.Text = iString
Label4.Text = iString
Label5.Text = iString
i += 1
End Sub

Private Sub UserControl1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Timer1.Start()
End Sub

Private Sub Panel1_Click1(sender As Object, e As EventArgs) Handles Panel1.Click
Panel1.Focus()
End Sub

Respuestas

0 para la respuesta № 1

Puedes agregar un Panel con Dock=Fill y AutoScroll=true en el que insertas tus controles. Luego agregue el evento de clic para el panel:

private void panel1_Click(object sender, EventArgs e)
{
this.ActiveControl = panel1;
}

De esta manera, si hace clic dentro del panel (que llena todo UserControl), el panel estará activo y puede desplazarse. Esto no afectará los controles dentro del panel para que pueda trabajar con ellos de la manera habitual.