Cómo: Desplazarse por un formulario de etiquetas

Actualización: noviembre 2007

Puesto que un control Label no tiene el foco y no admite tabulación, una aplicación Smartphone de sólo controlesLabel no permite que el usuario navegue a etiquetas que estén fuera del área visible de cliente del formulario. El usuario de una aplicación de Pocket PC puede puntear en las barras de desplazamiento para navegar, pero esta función no está disponible en Smartphone.

Puede implementar la navegación proporcionando código en el controlador de eventos para el evento KeyDown que ajusta la propiedad AutoScrollPosition.

Para desplazar un formulario de controles de etiqueta

  1. Agregue varios controles Label al formulario para que algunos de ellos estén debajo del área visible de cliente. Utilice las teclas de dirección en el diseñador de Microsoft Visual Studio 2005 o escriba el código de inicialización para colocarlos.

  2. En el constructor del formulario, establezca las propiedades KeyPreview y AutoScroll en true. Los usuarios de C# deben asociar un delegado para el controlador de eventos KeyDown.

    Me.KeyPreview = True
    Me.AutoScroll = True
    
    this.KeyPreview = true;
    this.KeyDown += new KeyEventHandler(Form1_KeyDown);
    this.AutoScroll = true;
    
  3. Establezca la propiedad AutoScrollPosition con el fin de desplazarse verticalmente por un número fijo de píxeles para que y señale la coordenada. En el ejemplo de código siguiente se utiliza 16. Tenga en cuenta que el código es complejo porque AutoScrollPosition tiene un desplazamiento de valores negativos, pero los valores de punto proporcionados se deben expresar como positivos.

    Private Sub Form1_KeyDown(ByVal Sender As System.Object, _
        ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
        If e.KeyCode = System.Windows.Forms.Keys.Up Then
            Me.AutoScrollPosition = New Point(0, -Me.AutoScrollPosition.Y - 16)
        End If
        If e.KeyCode = System.Windows.Forms.Keys.Down Then
            Me.AutoScrollPosition = New Point(0, -Me.AutoScrollPosition.Y + 16)
        End If
    End Sub
    
    private void Form1_KeyDown(object sender, KeyEventArgs e)
    {
        if ((e.KeyCode == System.Windows.Forms.Keys.Up))
        {
            this.AutoScrollPosition = new Point(0, -this.AutoScrollPosition.Y - 16);
        }
        if ((e.KeyCode == System.Windows.Forms.Keys.Down))
        {
            this.AutoScrollPosition = new Point(0, -this.AutoScrollPosition.Y + 16);
        }
    

Compilar el código

Para este ejemplo se requieren referencias a los siguientes espacios de nombres:

Vea también

Conceptos

.Temas "Cómo..." de .NET Compact Framework

Otros recursos

Desarrollo de Smartphone y .NET Compact Framework