Gewusst wie: Navigieren durch Daten in Windows Forms
In einer Windows-Anwendung besteht die einfachste Möglichkeit zum Navigieren zwischen Datensätzen in einer Datenquelle darin, eine BindingSource-Komponente an die Datenquelle und dann Steuerelemente an BindingSource zu binden. Sie können dann die integrierte Navigationsmethode in BindingSource verwenden, z. B. MoveNext, MoveLast, MovePrevious und MoveFirst. Mithilfe dieser Methoden werden die Position-Eigenschaft und die Current-Eigenschaft von BindingSource entsprechend angepasst. Sie können ein Element auch suchen, um es als aktuelles Element festzulegen. Dazu legen Sie die Position-Eigenschaft fest.
So erhöhen Sie die Position in einer Datenquelle
Legen Sie die Position-Eigenschaft von BindingSource für die gebundenen Daten auf die entsprechende Datensatzposition fest. Im folgenden Beispiel wird mithilfe der MoveNext-Methode von BindingSource veranschaulicht, wie die Position-Eigenschaft beim Klicken auf nextButton erhöht wird. BindingSource ist mit der Tabelle Customers eines Northwind-DataSets verknüpft.
Tipp
Das Festlegen der Position-Eigenschaft auf einen Wert, der über den ersten oder letzten Datensatz hinausgeht, verursacht keinen Fehler, da .NET Framework verhindert, dass Sie die Position auf einen Wert außerhalb der durch die Liste vorgegebenen Grenzen festlegen. Wenn es in der Anwendung von Bedeutung ist, dass Sie wissen, ob Sie den ersten oder letzten Datensatz überschritten haben, verwenden Sie Logik zum Testen, ob die Datenelementeanzahl überschritten wird.
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(); }
So prüfen Sie, ob das Ende oder der Anfang überschritten wurde
Erstellen Sie einen Ereignishandler für das PositionChanged-Ereignis. Im Rahmen der Behandlungsroutine können Sie überprüfen, ob der vorgeschlagene Positionswert die tatsächliche Datenelementanzahl überschreitet.
Im folgenden Beispiel wird demonstriert, wie Sie überprüfen können, ob das letzte Datenelement erreicht wurde. Wenn im Beispiel das letzte Element erreicht wurde, ist die Schaltfläche Weiter im Formular deaktiviert.
Tipp
Wenn Sie die Liste ändern, in der Sie im Code navigieren, müssen Sie die Schaltfläche Weiter erneut aktivieren, damit die Benutzer die neue Liste in ihrer gesamten Länge durchsuchen können. Achten Sie außerdem darauf, dass das oben angegebene PositionChanged-Ereignis für das verwendete BindingSource-Element der entsprechenden Ereignisbehandlungsmethode zugeordnet sein muss. Im Folgenden finden Sie ein Beispiel für eine Methode zum Behandeln des PositionChanged-Ereignisses:
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; }
So suchen Sie ein Element und legen es als aktuelles Element fest
Suchen Sie den Datensatz, den Sie als aktuelles Element festlegen möchten. Sie können dazu die Find-Methode von BindingSource verwenden, wenn die Datenquelle IBindingList implementiert. Einige Beispiele für Datenquellen, die IBindingList implementieren, sind BindingList<T> und 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; }
Siehe auch
Konzepte
Von Windows Forms unterstützte Datenquellen
Änderungsbenachrichtigung in der Windows Forms-Datenbindung
Datenbindung und Windows Forms