Anleitung: Daten in Windows Forms navigieren
In einer Windows-Anwendung ist es am einfachsten, durch Datensätze in einer Datenquelle zu navigieren, indem man eine BindingSource-Komponente an die Datenquelle bindet und dann Steuerelemente an die BindingSourcebindet. Anschließend können Sie die integrierte Navigationsmethode auf dem BindingSource wie MoveNext, MoveLast, MovePrevious und MoveFirstverwenden. Die Verwendung dieser Methoden passt die Eigenschaften Position und Current der BindingSource entsprechend an. Sie können ein Element auch finden und als aktuelles Element festlegen, indem Sie die eigenschaft Position festlegen.
So erhöhen Sie die Position in einer Datenquelle
Legen Sie die Position-Eigenschaft des BindingSource für die gebundenen Daten auf die Datensatzposition fest, zu der gewechselt werden soll. Das folgende Beispiel veranschaulicht die Verwendung der MoveNext-Methode des BindingSource, um die Position-Eigenschaft beim Klicken auf
nextButton
zu inkrementieren. Die BindingSource ist derCustomers
Tabelle eines DatensatzesNorthwind
zugeordnet.Anmerkung
Das Festlegen der Position-Eigenschaft auf einen Wert außerhalb des ersten oder letzten Datensatzes führt nicht zu einem Fehler, da .NET Framework die Position nicht auf einen Wert außerhalb der Grenzen der Liste festlegen kann. Wenn es in Ihrer Anwendung wichtig ist, zu wissen, ob Sie den ersten oder letzten Datensatz überschritten haben, schließen Sie Logik ein, um zu testen, ob die Anzahl der Datenelemente überschritten wird.
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
Um festzustellen, ob Sie das Ende oder den Anfang überschritten haben
Erstellen Sie einen Ereignishandler für das PositionChanged-Ereignis. Im Handler können Sie testen, ob der vorgeschlagene Positionswert die tatsächliche Datenelementanzahl überschritten hat.
Das folgende Beispiel veranschaulicht, wie Sie testen können, ob Sie das letzte Datenelement erreicht haben. Wenn Sie sich im Beispiel am letzten Element befinden, ist die Schaltfläche Weiter im Formular deaktiviert.
Anmerkung
Beachten Sie folgendes: Wenn Sie die Liste ändern, die Sie im Code navigieren, sollten Sie die Schaltfläche "Weiter" erneut aktivieren, damit Benutzer die gesamte Länge der neuen Liste durchsuchen können. Beachten Sie außerdem, dass das oben PositionChanged Ereignis für die spezifische BindingSource, mit der Sie arbeiten, der Ereignisbehandlungsmethode zugeordnet werden muss. Im Folgenden sehen Sie ein Beispiel für eine Methode zum Behandeln des PositionChanged-Ereignisses:
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
Ein Element finden und als aktuelles Element festlegen
Suchen Sie den Datensatz, den Sie als aktuelles Element festlegen möchten. Dazu können Sie die Find-Methode des BindingSourceverwenden, wenn die Datenquelle IBindingListimplementiert. Einige Beispiele für Datenquellen, die IBindingList implementieren, sind BindingList<T> und 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
Siehe auch
.NET Desktop feedback