Gewusst wie: Navigieren durch Daten in Windows Forms

Aktualisiert: November 2007

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.

    Hinweis:

    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.

    Hinweis:

    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

Weitere Ressourcen

Datenbindung in Web Forms