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