Vorgehensweise: Navigieren durch Daten in Windows Forms
Die einfachste Möglichkeit, in einer Windows-Anwendung durch die Datensätze in einer Datenquelle zu navigieren, besteht darin, eine BindingSource-Komponente an die Datenquelle und die Steuerelemente an das BindingSource-Objekt zu binden. Anschließend können Sie die integrierte Navigationsmethode für BindingSource verwenden, z. B. MoveNext, MoveLast, MovePrevious und MoveFirst. Durch die Verwendung dieser Methoden werden die Eigenschaften Position und Current von BindingSource entsprechend angepasst. Sie können ein Element auch suchen und als aktuelles Element festlegen, indem Sie die Eigenschaft Position festlegen.
So erhöhen Sie die Position in einer Datenquelle
Legen Sie die Eigenschaft Position des BindingSource-Objekts für Ihre gebundenen Daten auf die Datensatzposition fest, zu der sie wechseln möchten. Im folgenden Beispiel wird veranschaulicht, wie die Methode MoveNext von BindingSource verwendet wird, um die Position-Eigenschaft zu erhöhen, wenn auf
nextButton
geklickt wird. Das BindingSource-Objekt ist derCustomers
-Tabelle eines DatasetsNorthwind
zugeordnet.Hinweis
Das Festlegen der Eigenschaft Position auf einen Wert außerhalb des ersten oder letzten Datensatzes führt nicht zu einem Fehler, da .NET Framework nicht zulässt, dass Sie die Position auf einen Wert außerhalb der Grenzen der Liste festlegen. Wenn Ihre Anwendung stets wissen muss, ob der erste oder letzte Datensatz unter-/überschritten wurde, 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
So überprüfen Sie, ob Sie das Ende oder den Anfang über-/unterschritten haben
Erstellen Sie einen Ereignishandler für das PositionChanged-Ereignis. Im Handler können Sie testen, ob der vorgeschlagene Positionswert die tatsächliche Datenelementanzahl überschreitet.
Im folgenden Beispiel wird veranschaulicht, wie Sie testen können, ob Sie das letzte Datenelement erreicht haben. Wenn Sie sich im letzten Element befinden, wird die Schaltfläche Weiter im Formular deaktiviert.
Hinweis
Beachten Sie Folgendes: Wenn Sie die Liste, durch die Sie im Code navigieren ändern, müssen Sie die Schaltfläche Weiter wieder aktivieren, damit Benutzer durch die gesamte neue Liste springen können. Beachten Sie außerdem, dass das obige PositionChanged-Ereignis für das spezifische BindingSource-Objekt, mit dem Sie arbeiten, der entsprechenden Ereignisbehandlungsmethode zugeordnet werden muss. Im Folgenden finden 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
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 dies mithilfe der Find-Methode von BindingSource tun, wenn Ihre Datenquelle IBindingList implementiert. 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
Weitere Informationen
.NET Desktop feedback