Freigeben über


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

  1. 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 der Customers Tabelle eines Datensatzes Northwindzugeordnet.

    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

  1. 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

  1. 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