Partilhar via


Arquitetura de componente BindingSource

Com o BindingSource componente, você pode BIND universalmente todos os controles Windows Forms a fontes de dados.

The BindingSource componente simplifica o processo de ligar controles a uma fonte de dados e fornece as seguintes vantagens sobre vinculação de dados tradicional:

  • Permite a ligação de time de design para objetos de negócios.

  • Encapsula CurrencyManager funcionalidade e expõe CurrencyManager eventos em time de design.

  • Simplifica a criação de uma lista que ofereça suporte a IBindingList interface, fornecendo notificação de alterar de lista de fontes de dados que não suportam notificação de alterar de lista.

  • Fornece um ponto de extensibilidade para o IBindingList.AddNew método.

  • Fornece um nível de indireção entre a fonte de dados e o controle.Essa indireção é importante quando a fonte de dados pode ser alterada em time de execução.

  • Interopera com outros controles de Windows Forms relacionados a dados, especificamente o BindingNavigator e o DataGridView controles.

Por esses motivos, a BindingSource componente é a melhor maneira de BIND os controles Windows Forms a fontes de dados.

Recursos de BindingSource

The BindingSource componente fornece vários recursos para controles de ligação a dados. Com esses recursos, você pode implementar a maioria dos cenários de ligação de dados quase sem codificação de sua parte.

The BindingSource componente faz isso fornecendo uma interface consistente para acessar muitos tipos diferentes de fontes de dados. Isso significa que você usar o mesmo procedimento para vinculação de qualquer tipo.Por exemplo, você pode anexar o DataSource propriedade para um DataSet ou a um objeto comercial e, em ambos os casos, usar o mesmo conjunto de propriedades, métodos e eventos para manipular a fonte de dados.

A interface consistente fornecida pelo BindingSource componente simplifica bastante o processo de vinculação de dados a controles. Para tipos de fonte de dados que fornecem notificação de alterar, a deBindingSource componente automaticamente se comunica as alterações entre o controle e a fonte de dados. Para tipos de fonte de dados que não fornecem notificação de alterar, eventos são fornecidas que permitem gerar notificações de alterar.A lista a seguir mostra os recursos suportados pelo BindingSource componente:

Caminho indireto

The BindingSource componente fornece um nível de indireção entre um controle e uma fonte de dados. Em vez de ligação de um controle diretamente a uma fonte de dados, você deve BIND o controle a um BindingSource, e anexar a fonte de dados para o BindingSource componente DataSource propriedade.

Com este nível de engano, você pode alterar a fonte de dados sem redefinir a ligação de controle.Isso oferece os seguintes recursos:

Gerenciamento de moeda

The BindingSource componente implementa o ICurrencyManagerProvider interface para lidar com gerenciamento de moeda para você. Com o ICurrencyManagerProvider interface, você também pode acessar o gerente de moeda para um BindingSource, juntamente com o Gerenciador de moeda para outra BindingSource limite ao mesmo DataMember.

The BindingSource encapsula o componente CurrencyManager funcionalidade e expõe mais comuns CurrencyManager propriedades e eventos. A tabela a seguir descreve alguns dos membros relacionados ao gerenciamento de moeda.

  • Propriedade CurrencyManager
    Obtém o gerente de moeda associado a BindingSource.

  • Método GetRelatedCurrencyManager
    Se não houver outro BindingSource vinculada ao membro de dados especificado, obtém seu Gerenciador de moeda.

  • Propriedade Current
    Obtém o item corrente da fonte de dados.

  • Propriedade Position
    Obtém ou define a posição corrente na lista subjacente.

  • Método EndEdit
    Aplica as alterações pendentes a fonte de dados subjacente.

  • Método CancelEdit
    Cancela a operação de edição corrente.

Fonte de dados sistema autônomo uma lista

The BindingSource componente implementa o IBindingListView e ITypedList interfaces. Com essa implementação, você pode usar o BindingSource próprio componente sistema autônomo uma fonte de dados, sem qualquer armazenamento externo.

Quando o BindingSource componente é anexado a uma fonte de dados, ele expõe a fonte de dados sistema autônomo uma lista.

The DataSource propriedade pode ser conjunto várias fontes de dados. Elas incluem tipos, objetos e listas de tipos.A fonte de dados resultante será exposta sistema autônomo uma lista.A tabela a seguir mostra algumas das fontes de dados comuns e a avaliação de lista resultante.

Propriedade DataSource

Lista de resultados

A nulo referência (Nothing no Visual Basic)

Um vazio IBindingList de objetos. Adicionar um item define a lista do tipo de item adicionado.

Uma referência nula (Nothing no Visual Basic) com DataMember conjunto

Não suportado; gera ArgumentException.

Tipo de lista não ou objeto do tipo "T"

Um vazio IBindingListdo tipo "T".

Ocorrência de array

An IBindingList que contém os elementos da matriz.

IEnumerable instância

An IBindingList que contém o IEnumerable itens

Instância que contém o tipo de lista "T"

An IBindingListinstância que contém o tipo "T".

Além disso, DataSource pode ser definida para outros tipos de lista, sistema autônomo IListSource e ITypedListe o BindingSource tratará-los adequadamente. Nesse caso, o tipo contido na lista deve ter um construtor padrão.

BindingSource sistema autônomo IBindingList

The BindingSource componente fornece a membros para acessar e manipular sistema autônomo dados de base sistema autônomo um IBindingList. A tabela a seguir descreve alguns desses membros.

Membro

Descrição

Propriedade List

Obtém a lista resultante de avaliação do DataSource ou DataMember Propriedades.

Método AddNew

Adiciona um novo item à lista subjacente.Aplica-se a fontes de dados que implementam o IBindingList interface e permitir a adição de itens (ou seja, o AllowNew propriedade estiver definida como true).

Criação de item personalizado

Você pode manipular o AddingNew evento para fornecer sua própria lógica de criação do item. The AddingNew evento ocorre antes de um novo objeto é adicionado para o BindingSource. Este evento é gerado após a AddNew método é chamado, mas antes que o novo item é adicionado à lista subjacente. Manipulando esse evento, você pode fornecer o comportamento de criação do item personalizado sem derivar do BindingSource classe. Para obter mais informações, consulte Como: Personalizar a adição de item com o Windows Forms BindingSource.

Criação do item transacional

The BindingSource componente implementa o ICancelAddNew interface que permite a criação do item transacional. Depois que um novo item provisoriamente é criado usando uma telefonar de AddNew, a adição pode ser confirmada ou revertida das seguintes maneiras:

  • The EndNew método será explicitamente confirmar adição pendente.

  • Executando outra operação de coleção, sistema autônomo uma inserção, remoção ou movimento, implicitamente comprometerá a adição pendente.

  • The CancelNew método reverterá a adição pendente se o método não já foi confirmado.

Suporte de IEnumerable

The BindingSource componente permite que os controles de vinculação IEnumerable fontes de dados. Com este componente, você pode BIND a uma fonte de dados, sistema autônomo um System.Data.SqlClient.SqlDataReader.

Quando um IEnumerable fonte de dados está atribuído a BindingSource componente, o BindingSource cria um IBindingList e adiciona o Sumário da IEnumerable fonte de dados à lista.

Em time de design

Alguns tipos de objeto não podem ser criados time de design, por exemplo, objetos criados a partir de uma classe de fábrica ou objetos retornados por um serviço Web.Às vezes, convém BIND os controles a esses tipos em time de design, mesmo que não haja nenhum objeto em memória ao qual podem BIND os controles.Por exemplo, convém identificar os cabeçalhos de coluna de um DataGridView controlar com os nomes de propriedades públicas do seu tipo personalizado.

Para oferecer suporte a esse cenário, o BindingSource componente suporta ligação a um Type. Quando você atribui um Type para o DataSource propriedade, o BindingSource componente cria um vazio BindingList<T> de Type itens. Quaisquer controles, em seguida, BIND ao BindingSource componente será alertado a presença de propriedades ou esquema de seu tipo em time de design ou em time de execução. Para obter mais informações, consulte Como: BIND um controle Windows Forms a um tipo.

Métodos ListBindingHelper estático

The System.Windows.Forms.BindingContext, System.Windows.Forms.CurrencyManager, e BindingSource tipos de toda a lógica comum compartilhamento para gerar uma lista de um DataSource/DataMember emparelhar. Além disso, essa lógica comum é publicamente exposta para ser usado por autores de controle e de terceiros no seguinte static métodos:

classificação Filtragem com a interface IBindingListView e

The BindingSource componente implementa o IBindingListView interface, que estende o IBindingList interface. The IBindingList oferece a única coluna de classificação e o IBindingListView oferece a classificação e filtragem avançadas. Com IBindingListView, você pode classificar e filtrar itens na fonte de dados, se a fonte de dados também implementa um dessas interfaces. The BindingSource componente não fornece uma implementação de referência desses membros. Em vez disso, as chamadas são encaminhadas para a lista subjacente.

A tabela a seguir descreve as propriedades usadas para classificar e filtrar.

Membro

Descrição

Propriedade Filter

Se a fonte de dados for um IBindingListView, obtém ou define a expressão usada para filtrar quais linhas são exibidas.

Propriedade Sort

Se a fonte de dados for um IBindingList, obtém ou define um nome de coluna usado classificar e as informações de ordem de classificar.

- ou -

Se a fonte de dados for um IBindingListView e suporte avançados classificar, obtém vários nomes de coluna usados classificar e a ordem de classificar

Integração com o BindingNavigator

Você pode usar o BindingSource componente para BIND qualquer controle Windows Forms a uma fonte de dados, mas o BindingNavigator o controle é projetado especificamente para trabalhar com o BindingSource componente. The BindingNavigator controle fornece uma interface de usuário para controlar o BindingSource item corrente do componente. Por padrão, a BindingNavigator o controle fornece botões que correspondem aos métodos de navegação na BindingSource componente. Para obter mais informações, consulte Como: Navegar em Dados com o Controle BindingNavigator do Windows Forms.

Consulte também

Tarefas

Como: BIND um controle Windows Forms a um tipo

Como: Refletir atualizações de fonte de dados em um controle Windows Forms com o BindingSource

Referência

BindingSource componente visão geral

BindingSource

BindingNavigator

Outros recursos

BindingNavigator controle (Windows Forms)

Ligação de dados de formulários do Windows

Controles a ser usado no Windows Forms