Partilhar via


Como: Navegar dados no Windows Forms

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

Para incrementar a posição em uma fonte de dados

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

    Observação

    Definir a propriedade Position 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 posição para um valor fora dos limites da lista. Se for importante em seu aplicativo saber se você passou do primeiro ou do último registro, inclua lógica para testar se você excederá a contagem de elementos de dados.

    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
    

Para verificar se ultrapassou o final ou o início

  1. Crie um manipulador de eventos para o evento PositionChanged. No manipulador, você pode testar se o valor da posição proposta excedeu a contagem real de elementos de dados.

    O exemplo a seguir ilustra como você pode testar se atingiu o último elemento de dados. No exemplo, se você estiver no último elemento, o botão Avançar no formulário será desabilitado.

    Observação

    Esteja ciente de que, se você alterar a lista que você está navegando no código, você deve reativar o botão Próxima, para que os usuários possam navegar por toda a extensão da nova lista. Além disso, esteja ciente de que o evento de PositionChanged acima para o BindingSource específico com o qual está a trabalhar precisa ser associado ao respetivo método de manipulação de eventos. A seguir está um exemplo de um método para manipular o evento 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
    

Para localizar um item e defini-lo como o item atual

  1. Encontre o registro que você deseja definir como o item atual. Você pode fazer isso usando o método Find do BindingSource, caso a sua fonte de dados implemente 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
    

Ver também