Interfaces de vinculação de dados
Com ADO.NET, você pode criar muitas estruturas de dados diferentes para atender às necessidades do seu aplicativo e os dados que você estiver trabalhando com vinculação. Você talvez queira criar suas próprias classes que fornecem ou consomem dados no Windows Forms. Esses objetos podem oferecer vários níveis de funcionalidade e a complexidade, desde a ligação de dados básicos, fornecer suporte de tempo de design, verificação de erros, notificação de alteração ou até mesmo suporte para a reversão das alterações feitas nos próprios dados estruturada.
Consumidores de Interfaces de vinculação de dados
Seções a seguir descrevem os dois grupos de objetos de interface. O primeiro grupo de lista de interfaces que são implementadas em fontes de dados por autores de fonte de dados. Essas interfaces são projetadas para serem consumidos por consumidores de fonte de dados, na maioria dos casos de que controles do Windows Forms ou componentes. O segundo grupo lista interfaces projetados para ser usado por autores de componente. Os autores do componente usam essas interfaces quando eles estão criando um componente que suporta a vinculação de dados a ser consumido pelo mecanismo de ligação de dados do Windows Forms. Você pode implementar essas interfaces de classes associadas ao seu formulário para habilitar a ligação de dados; cada caso apresenta uma classe que implementa uma interface que permite a interação com os dados. Visual Studioferramentas de experiência de design do aplicativo rápida RAD (desenvolvimento) dados já aproveitam essa funcionalidade.
Interfaces para implementação por autores de fonte de dados
As seguintes interfaces são projetadas para serem consumidos por controles Windows Forms:
IListinterface
Uma classe que implementa o IList interface pode ser um Array, ArrayList, ou CollectionBase. Esses são indexadas listas de itens do tipo Object. Essas listas devem conter tipos homogêneos, porque o primeiro item do índice determina o tipo. IListestaria disponível para ligação somente em tempo de execução.
Observação Se você quiser criar uma lista de objetos de negócios para a ligação com o Windows Forms, você deve considerar o uso de BindingList<T>. O BindingList<T> é uma classe extensível que implementa as interfaces primárias necessárias para bidirecional vinculação de dados de Windows Forms.
IBindingListinterface
Uma classe que implementa o IBindingList interface fornece um nível mais alto de funcionalidade de ligação de dados. Essa implementação oferece recursos básicos de classificação e a notificação de alteração, tanto para quando alterar os itens de lista (por exemplo, o terceiro item em uma lista de clientes tem uma alteração para o campo de endereço), bem como quando a própria lista muda (por exemplo, o número de itens na lista aumenta ou diminui). Notificação de alteração é importante se planeja fazer com que o vários controles vinculados aos mesmos dados, e você deseja que as alterações de dados feitas em um dos controles para propagar para outros controles acoplados.
Observação Notificação de alteração está habilitada para o IBindingList através da interface do SupportsChangeNotification propriedade que, quando true, gera uma ListChanged evento, indicando a lista alterado ou um item na lista alterado.
O tipo de alteração é descrito pela ListChangedType propriedade da ListChangedEventArgs parâmetro. Portanto, sempre que o modelo de dados é atualizado, quaisquer exibições dependentes, como, por exemplo, outros controles acoplados à mesma fonte de dados, também serão atualizadas. No entanto, os objetos contidos na lista terão para a lista de notificação quando eles são alterados para que a lista pode elevar a ListChanged de evento.
Observação O BindingList<T> fornece uma implementação genérica do IBindingList interface.
IBindingListViewinterface
Uma classe que implementa o IBindingListView interface fornece toda a funcionalidade de uma implementação de IBindingList, funcionalidade de classificação, bem como filtragem e Avançado. Essa implementação oferece filtragem baseada em cadeia de caracteres e classificar várias colunas com pares de direção do descritor de propriedade.
IEditableObjectinterface
Uma classe que implementa o IEditableObject interface permite que um objeto controlar quando são feitas alterações a esse objeto permanente. Essa implementação lhe dá a BeginEdit, EndEdit, e CancelEdit métodos, que permitem que você reverter as alterações feitas no objeto. Veja a seguir uma breve explicação sobre o funcionamento da BeginEdit, EndEdit, e CancelEdit métodos e como eles funcionam em conjunto com um outro para habilitar uma reversão de possível alterações feitas nos dados:
O BeginEdit método sinaliza o início de uma edição em um objeto. Um objeto que implementa essa interface será necessário armazenar todas as atualizações após o BeginEdit chamada de método de tal forma que as atualizações podem ser descartadas se o CancelEdit método é chamado. No Windows Forms de ligação de dados, você pode chamar BeginEdit várias vezes dentro do escopo de uma única transação editar (por exemplo, BeginEdit, BeginEdit, EndEdit). Implementações de IEditableObject deve controlar se BeginEdit já foi chamado e ignorar as chamadas subseqüentes para BeginEdit. Porque esse método pode ser chamado várias vezes, é importante que as chamadas subseqüentes a ele são destrutivas; ou seja, subseqüentes BeginEdit chamadas não é possível destruir as atualizações que foram feitas ou alteram os dados que foi salvo no primeiro BeginEdit chamada.
O EndEdit método envia quaisquer alterações desde a BeginEdit foi chamado no objeto subjacente, se o objeto estiver atualmente no modo de edição.
O CancelEdit método descarta quaisquer alterações feitas no objeto.
Para obter mais informações sobre como o BeginEdit, EndEdit, e CancelEdit métodos de trabalho, consulte Salvar dados em Datasets.
Essa noção transacional de funcionalidade de dados é usada pelo DataGridView de controle.
ICancelAddNewinterface
Uma classe que implementa o ICancelAddNew geralmente implementa uma interface de IBindingList interface e permite que você reverta uma adição feita na fonte de dados com o AddNew método. Se a fonte de dados implementa o IBindingList interface, você também deve ter implementar a ICancelAddNew interface.
IDataErrorInfointerface
Uma classe que implementa o IDataErrorInfo interface permite que os objetos oferecem informações de erro personalizadas para controles vinculados:
IEnumerableinterface
Uma classe que implementa o IEnumerable interface é geralmente é consumido por ASP.NET. Suporte do Windows Forms para esta interface está disponível apenas através do BindingSource componente.
Observação O BindingSource componente copia todos os IEnumerable itens em uma lista separada para fins de vinculação.
ITypedListinterface
Uma classe de coleções que implementa o ITypedList interface fornece a capacidade de controlar a ordem e o conjunto de propriedades expostas ao controle acoplado.
Observação Ao implementar a GetItemProperties método e o PropertyDescriptor matriz não é nulo, a última entrada na matriz será o descritor de propriedade que descreve a propriedade de lista que é outra lista de itens.
ICustomTypeDescriptorinterface
Uma classe que implementa o ICustomTypeDescriptor interface fornece informações dinâmicas sobre si mesmo. Essa interface é semelhante a ITypedList , mas é usado para objetos em vez de listas. Essa interface é usada por DataRowView para projetar o esquema de linhas de base. Uma implementação simples da ICustomTypeDescriptor é fornecida pelo CustomTypeDescriptor classe.
Observação Para oferecer suporte a ligação de tempo de design para tipos que implementam ICustomTypeDescriptor, o tipo também deve implementar IComponent e existir como uma instância no formulário.
IListSourceinterface
Uma classe que implementa o IListSource interface permite que a ligação de lista baseada em todos os objetos fora da lista. O GetList o método de IListSource é usada para retornar uma lista bindable de um objeto que não herda de IList. IListSourceé usado pelo DataSet classe.
IRaiseItemChangedEventsinterface
Uma classe que implementa o IRaiseItemChangedEvents interface é uma lista de ligável também implementa o IBindingList interface. Essa interface é usada para indicar se o seu tipo gera ListChanged eventos do tipo ItemChanged por meio de sua RaisesItemChangedEvents propriedade.
Observação Você deve implementar a IRaiseItemChangedEvents se a fonte de dados fornece a propriedade para a conversão da lista de eventos descrito anteriormente e está interagindo com o BindingSource componente. Caso contrário, o BindingSource também irá executar a propriedade para a conversão de eventos de lista, resultando em desempenho mais lento.
ISupportInitializeinterface
Um componente que implementa o ISupportInitialize interface leva as vantagens das otimizações de lote para definir propriedades e inicializando co-dependentes propriedades. O ISupportInitialize contém dois métodos:
ISupportInitializeNotificationinterface
Um componente que implementa o ISupportInitializeNotification interface também implementa o ISupportInitialize interface. Essa interface permite notificar outros ISupportInitialize componentes que a inicialização for concluída. O ISupportInitializeNotification interface contém dois membros:
IsInitializedRetorna um boolean valor que indica se o componente é inicializado.
Initializedocorre quando EndInit é chamado.
INotifyPropertyChangedinterface
Uma classe que implementa essa interface é um tipo que gera um evento quando qualquer um dos seus valores de propriedade alterar. Essa interface é projetada para substituir o padrão de ter um evento de alteração para cada propriedade de um controle. Quando usado em um BindingList<T>, um objeto comercial deve implementar a INotifyPropertyChanged interface e BindingList'1 converterá PropertyChanged eventos de ListChanged eventos do tipo ItemChanged.
Observação Para alterar de notificação para ocorrer em uma ligação entre um cliente acoplado e dados de um origem seu tipo de fonte de dados acoplado ou implementar o INotifyPropertyChanged interface (preferido) ou você pode fornecer propertyNameChanged eventos para o tipo de limite, mas você não devem fazer ambos.
Interfaces para implementação por autores de componente
As seguintes interfaces são destinadas ao consumo pelo mecanismo de ligação de dados do Windows Forms:
IBindableComponentinterface
Uma classe que implementa essa interface é um componente de controle não suporta vinculação de dados. Essa classe retorna as ligações de dados e o contexto de ligação do componente por meio de DataBindings e BindingContext Propriedades de interface.
Observação Se o seu componente herda de Control, você não precisará implementar a IBindableComponent interface.
ICurrencyManagerProviderinterface
Uma classe que implementa o ICurrencyManagerProvider interface é um componente que fornece sua própria CurrencyManager para gerenciar as ligações associadas a este componente específico. Acesso personalizado CurrencyManager é fornecida pelo CurrencyManager propriedade.
Observação Uma classe que herda de Control gerencia automaticamente através de ligações sua BindingContext propriedade, então, casos em que você precisa implementar a ICurrencyManagerProvider são relativamente raros.
Consulte também
Tarefas
Como: Criar um controle vinculado a simples em um Windows Form
Conceitos
Ligação de dados e o Windows Forms