Cómo: Desplazarse por datos en formularios Windows Forms

En una aplicación para Windows, el modo más sencillo de navegar por los registros de un origen de datos es enlazar un componente BindingSource al origen de datos y luego enlazar controles a BindingSource. Puede utilizar a continuación el método de navegación integrado en BindingSource como un método: MoveNext, MoveLast, MovePrevious y MoveFirst. Al utilizar estos métodos, se ajustarán adecuadamente las propiedades Position y Current de BindingSource. También puede encontrar un elemento y establecerlo como el elemento actual definiendo la propiedad Position.

Para incrementar la posición en un origen de datos

  • Establezca la propiedad Position del objeto BindingSource correspondiente a los datos enlazados en la posición de registro a la que desea ir. En el ejemplo siguiente se muestra cómo utilizar el método MoveNext de BindingSource para incrementar la propiedad Position cuando se hace clic en nextButton. BindingSource está asociado a la tabla Customers de un conjunto de datos Northwind.

    Nota

    Si se establece la propiedad Position en un valor más allá del primer o último registro, no se produce un error, puesto que .NET Framework no permitirá que se establezca la posición en un valor que esté fuera de los límites de la lista. Si es importante para la aplicación saber si se fue más allá del primer o el último registro, incluya lógica que compruebe si se superó la cuenta de elementos de datos.

    Private Sub nextButton_Click(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles nextButton.Click
        Me.customersBindingSource.MoveNext()
    End Sub
    
    private void nextButton_Click(object sender, System.EventArgs e)
    {
        this.customersBindingSource.MoveNext();
    }
    

Para comprobar si se fue más allá del principio o del final

  • Cree un controlador de eventos para el evento PositionChanged. En el controlador, puede comprobar si el valor de la posición propuesta supera la cuenta real de elementos de datos.

    En el ejemplo siguiente se ilustra cómo comprobar si se alcanzó el último elemento de datos. En el ejemplo, si se encuentra en el último elemento, el botón Next (Siguiente) del formulario se deshabilita.

    Nota

    Tenga en cuenta que, en caso de cambiar la lista por la que se está navegando mediante código, deberá volver a habilitar el botón Siguiente, de modo que los usuarios puedan examinar toda la lista nueva. Además, tenga en cuenta que el evento PositionChanged anterior para el BindingSource concreto con el que se está trabajando debe estar asociado a su método de control de eventos. A continuación figura un ejemplo de un método para controlar el evento PositionChanged:

    Sub customersBindingSource_PositionChanged(ByVal sender As Object, _
        ByVal e As EventArgs)
    
        If customersBindingSource.Position = _
            customersBindingSource.Count - 1 Then
            nextButton.Enabled = False
        Else
            nextButton.Enabled = True
        End If
    End Sub
    
    void customersBindingSource_PositionChanged(object sender, EventArgs e)
    {
        if (customersBindingSource.Position == customersBindingSource.Count - 1)
            nextButton.Enabled = false;
        else
            nextButton.Enabled = true;
    }
    

Para encontrar un elemento y establecerlo como el elemento actual

  • Encuentre el registro que desea establecer como el elemento actual. Puede hacer esto utilizando el método Find de BindingSource, si el origen de datos implementa IBindingList. Algunos ejemplos de orígenes de datos que implementan IBindingList son BindingList<T> y DataView.

    Sub findButton_Click(ByVal sender As Object, ByVal e As EventArgs) _
        Handles findButton.Click
        Dim foundIndex As Integer = customersBindingSource.Find("CustomerID", _
            "ANTON")
        customersBindingSource.Position = foundIndex
    End Sub
    
    void findButton_Click(object sender, EventArgs e)
    {
        int foundIndex = customersBindingSource.Find("CustomerID", "ANTON");
        customersBindingSource.Position = foundIndex;
    }
    

Vea también

Conceptos

Orígenes de datos compatibles con formularios Windows Forms

Notificación de cambios en el enlace de datos de Windows Forms

Enlace de datos y formularios Windows Forms

Otros recursos

Enlace de datos en Windows Forms