Udostępnij za pośrednictwem


Instrukcje: nawigowanie po danych w formularzach systemu Windows

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

Zwiększenie pozycji w źródle danych

  1. Ustaw właściwość Position elementu BindingSource dla powiązanych danych, wskazując pozycję rekordu, do której należy przejść. Poniższy przykład pokazuje użycie metody MoveNext w kontekście BindingSource, aby zwiększyć właściwość Position po kliknięciu nextButton. BindingSource jest skojarzona z tabelą Customers zestawu danych Northwind.

    Notatka

    Ustawienie właściwości Position na wartość poza pierwszym lub ostatnim rekordem nie powoduje błędu, ponieważ program .NET Framework nie pozwoli ustawić pozycji na wartość spoza granic listy. Jeśli w Twojej aplikacji ważne jest, aby wiedzieć, czy minąłeś pierwszy lub ostatni rekord, dołącz logikę, aby sprawdzić, 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 przekroczyłeś koniec lub początek

  1. Utwórz procedurę obsługi zdarzeń dla zdarzenia PositionChanged. 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.

    Notatka

    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 zdarzenie PositionChanged dla konkretnego BindingSource, nad którym pracujesz, musi być skojarzone z jego metodą obsługi zdarzeń. Poniżej przedstawiono przykład metody obsługi zdarzenia PositionChanged:

    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 metody Find z BindingSource, jeśli źródło danych implementuje IBindingList. Niektóre przykłady źródeł danych implementujących 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ż