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.
Gerenciamento de moeda.
Fonte de dados sistema autônomo uma lista.
BindingSource sistema autônomo um IBindingList.
Criação de item personalizado.
Criação do item transacional.
IEnumerable suporte.
Suporte em time de design.
Estático ListBindingHelper métodos.
Classificação e filtragem com o IBindingListView interface.
Integração com BindingNavigator.
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:
Você pode anexar o BindingSource para diferentes fontes de dados, mantendo as ligações de controle corrente.
Você pode alterar os itens na fonte de dados e notificar limite controles.Para obter mais informações, consulte Como: Refletir atualizações de fonte de dados em um controle Windows Forms com o BindingSource.
Você pode BIND a um Type em vez de um objeto na memória. Para obter mais informações, consulte Como: BIND um controle Windows Forms a um tipo.Em seguida, você pode BIND a um objeto em time de execução.
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
Outros recursos
BindingNavigator controle (Windows Forms)