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 № 1Puedes 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.