Porady: nawigowanie w danych w formularzach systemu Windows

W aplikacji systemu Windows najprostszym sposobem nawigowania po rekordach w źródle danych jest powiązanie BindingSource składnika ze źródłem danych, a następnie powiązanie kontrolek z elementem BindingSource. Następnie można użyć wbudowanej metody nawigacji w BindingSource takich elementach MoveNext, MoveLastMovePrevious i MoveFirst. Użycie tych metod dostosuje Position właściwości BindingSource i Current odpowiednio. Możesz również znaleźć element i ustawić go jako bieżący element, ustawiając Position właściwość.

Aby zwiększać położenie w źródle danych

  1. Position Ustaw właściwość dla powiązanych BindingSource danych na pozycję rekordu, aby przejść do. Poniższy przykład ilustruje użycie MoveNext metody , BindingSource aby zwiększać Position właściwość po kliknięciu nextButton . Element BindingSource jest skojarzony z tabelą Customers zestawu danych Northwind.

    Uwaga

    Position Ustawienie właściwości na wartość spoza pierwszego lub ostatniego rekordu nie powoduje błędu, ponieważ program .NET Framework nie pozwoli ustawić pozycji na wartość spoza granic listy. Jeśli w aplikacji ważne jest, aby wiedzieć, czy minęło pierwszy, czy ostatni rekord, dołącz logikę do przetestowania, czy liczba elementów danych zostanie przekroczona.

    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
    

Aby sprawdzić, czy upłynął koniec, czy na początku

  1. Utwórz procedurę obsługi zdarzeń dla PositionChanged zdarzenia. W procedurze obsługi można sprawdzić, czy proponowana wartość pozycji przekroczyła rzeczywistą liczbę elementów danych.

    W poniższym przykładzie pokazano, jak można sprawdzić, czy osiągnięto ostatni element danych. W tym przykładzie, jeśli jesteś w ostatnim elemecie, przycisk Dalej w formularzu jest wyłączony.

    Uwaga

    Należy pamiętać, że jeśli zmienisz listę, którą przechodzisz w kodzie, ponownie włącz przycisk Dalej , aby użytkownicy mogli przeglądać całą długość nowej listy. Ponadto należy pamiętać, że powyższe PositionChanged zdarzenie dla określonego BindingSource , z którym pracujesz, musi być skojarzone z metodą obsługi zdarzeń. Poniżej przedstawiono przykład metody obsługi PositionChanged zdarzenia:

    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
    

Aby znaleźć element i ustawić go jako bieżący element

  1. Znajdź rekord, który chcesz ustawić jako bieżący element. Można to zrobić przy użyciu Find metody BindingSource, jeśli źródło danych implementuje IBindingListelement . Niektóre przykłady źródeł danych, które implementują IBindingList , to BindingList<T> i 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
    

Zobacz też