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
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 tablaCustomers
de un conjunto de datosNorthwind
.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
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
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
.NET Desktop feedback