Share via


Como navegar por dados nos Windows Forms

Em um aplicativo do Windows, a maneira mais fácil de navegar pelos registros em uma fonte de dados é vincular um BindingSource componente à fonte de dados e, em seguida, vincular controles ao BindingSource. Em seguida, você pode usar o BindingSource método de navegação interno no tal , MoveNextMoveLastMovePrevious e MoveFirst. O uso desses métodos ajustará as Position propriedades e Current o BindingSource apropriado. Você também pode localizar um item e defini-lo como o item atual definindo a Position propriedade.

Incrementar a posição em uma fonte de dados

  1. Defina a propriedade do para seus dados vinculados para a Position posição do BindingSource registro para ir. O exemplo a seguir ilustra o uso do método do BindingSource para incrementar a Position propriedade quando o MoveNextnextButton é clicado. O BindingSource está associado à Customers tabela de um conjunto Northwindde dados .

    Observação

    Definir a propriedade para um valor além do primeiro ou último registro não resulta em um erro, pois o .NET Framework não permitirá que você defina a Position posição para um valor fora dos limites da lista. Se, no aplicativo, for importante saber se você passou do primeiro ou do último registro, inclua a lógica para testar se a contagem de elementos de dados será excedida.

    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
    

Verificar se você passou do final ou do início

  1. Crie um manipulador de eventos para o evento PositionChanged. No manipulador, é possível testar se o valor da posição proposta excedeu a contagem de elementos de dados real.

    O exemplo a seguir ilustra como testar se o último elemento de dados foi alcançado. No exemplo, se você estiver no último elemento, o botão Próximo do formulário estará desabilitado.

    Observação

    Lembre-se de que é necessário alterar a lista em que você está navegando no código, reabilite o botão Próximo, para que os usuários possam pesquisar a totalidade da nova lista. Além disso, esteja ciente de que o evento acima PositionChanged para o específico BindingSource com o qual você está trabalhando precisa ser associado ao seu método de manipulação de eventos. A seguir está um exemplo de um método para manipular o PositionChanged evento:

    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
    

Localizar um item e defini-lo como o item atual

  1. Localize o registro que deseja definir como o item atual. Você pode fazer isso usando o FindBindingSourcemétodo do , se sua fonte de dados implementa IBindingList. Alguns exemplos de fontes de dados que implementam IBindingList são BindingList<T> e 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
    

Confira também