Procedimiento para desplazarse por los datos en formularios Windows Forms

En una aplicación de Windows, la manera más fácil de navegar por los registros de un origen de datos es enlazar un componente BindingSource al origen de datos y, a continuación, enlazar controles a BindingSource. A continuación, puede usar el método de navegación integrado en el componente BindingSource, como MoveNext, MoveLast, MovePrevious y MoveFirst. Usar estos métodos ajustará las propiedades Position y Current del componente BindingSource apropiadamente. También puede encontrar un elemento y establecerlo como elemento actual estableciendo la propiedad Position.

Para incrementar la posición en un origen de datos

  1. Establezca la propiedad Position del componente BindingSource para que los datos enlazados vayan a la posición de registro. En el ejemplo siguiente se muestra el uso del 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

    Establecer la propiedad Position en un valor más allá del primer o último registro no produce un error, ya que .NET Framework no le permitirá establecer la posición en un valor fuera de los límites de la lista. Si es importante saber en la aplicación si se ha excedido el primer o último registro, incluya lógica para comprobar si se va a superar la cantidad de elementos de datos.

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

Para comprobar si ha superado el final o el principio

  1. Cree un controlador para el evento PositionChanged. En el controlador, puede probar si el valor de posición propuesto ha superado la cantidad real de elementos de datos.

    En el ejemplo siguiente se muestra cómo probar si se ha alcanzado el último elemento de datos. En el ejemplo, si está en el último elemento, el botón Siguiente del formulario aparece deshabilitado.

    Nota

    Tenga en cuenta que, si cambia la lista que navega por el código, debe volver a habilitar el botón Siguiente para que los usuarios puedan examinar toda la longitud de la nueva lista. Además, tenga en cuenta que el evento PositionChanged anterior del componente BindingSource específico con el que está trabajando debe estar asociado a su método de control de eventos. A continuación se muestra un ejemplo de un método para controlar el evento PositionChanged:

    void customersBindingSource_PositionChanged(object sender, EventArgs e)
    {
        if (customersBindingSource.Position == customersBindingSource.Count - 1)
            nextButton.Enabled = false;
        else
            nextButton.Enabled = true;
    }
    
    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
    

Para buscar un elemento y establecerlo como elemento actual

  1. Busque el registro que desea establecer como elemento actual. Puede hacerlo mediante 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.

    void findButton_Click(object sender, EventArgs e)
    {
        int foundIndex = customersBindingSource.Find("CustomerID", "ANTON");
        customersBindingSource.Position = foundIndex;
    }
    
    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
    

Consulte también