Compartilhar via


BindingSource Classe

Definição

Encapsula a fonte de dados de um formulário.

public ref class BindingSource : System::ComponentModel::Component, System::Collections::IList, System::ComponentModel::IBindingListView, System::ComponentModel::ICancelAddNew, System::ComponentModel::ISupportInitializeNotification, System::ComponentModel::ITypedList, System::Windows::Forms::ICurrencyManagerProvider
public ref class BindingSource : System::ComponentModel::Component, System::Collections::IList, System::ComponentModel::IBindingListView, System::ComponentModel::ICancelAddNew, System::ComponentModel::ISupportInitialize, System::ComponentModel::ISupportInitializeNotification, System::ComponentModel::ITypedList, System::Windows::Forms::ICurrencyManagerProvider
[System.ComponentModel.ComplexBindingProperties("DataSource", "DataMember")]
public class BindingSource : System.ComponentModel.Component, System.Collections.IList, System.ComponentModel.IBindingListView, System.ComponentModel.ICancelAddNew, System.ComponentModel.ISupportInitializeNotification, System.ComponentModel.ITypedList, System.Windows.Forms.ICurrencyManagerProvider
[System.ComponentModel.ComplexBindingProperties("DataSource", "DataMember")]
public class BindingSource : System.ComponentModel.Component, System.Collections.IList, System.ComponentModel.IBindingListView, System.ComponentModel.ICancelAddNew, System.ComponentModel.ISupportInitialize, System.ComponentModel.ISupportInitializeNotification, System.ComponentModel.ITypedList, System.Windows.Forms.ICurrencyManagerProvider
[<System.ComponentModel.ComplexBindingProperties("DataSource", "DataMember")>]
type BindingSource = class
    inherit Component
    interface IBindingListView
    interface IBindingList
    interface IList
    interface ICollection
    interface IEnumerable
    interface ITypedList
    interface ICancelAddNew
    interface ISupportInitializeNotification
    interface ISupportInitialize
    interface ICurrencyManagerProvider
[<System.ComponentModel.ComplexBindingProperties("DataSource", "DataMember")>]
type BindingSource = class
    inherit Component
    interface IBindingListView
    interface ICollection
    interface IEnumerable
    interface IList
    interface IBindingList
    interface ITypedList
    interface ICancelAddNew
    interface ISupportInitializeNotification
    interface ISupportInitialize
    interface ICurrencyManagerProvider
Public Class BindingSource
Inherits Component
Implements IBindingListView, ICancelAddNew, ICurrencyManagerProvider, IList, ISupportInitializeNotification, ITypedList
Public Class BindingSource
Inherits Component
Implements IBindingListView, ICancelAddNew, ICurrencyManagerProvider, IList, ISupportInitialize, ISupportInitializeNotification, ITypedList
Herança
Atributos
Implementações

Exemplos

O exemplo de código a seguir demonstra um ListBox associado a um BindingSource. O BindingSource está associado a um BindingList<T> que contém uma lista de fontes.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace BindingSourceExamples
{
    public class Form1 : Form
    {
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.Run(new Form1());
        }

        public Form1()
        {
            this.Load += new EventHandler(Form1_Load);
        }

        private TextBox textBox1;
        private Button button1;
        private ListBox listBox1;
       
        private BindingSource binding1;
        void Form1_Load(object sender, EventArgs e)
        {
            listBox1 = new ListBox();
            textBox1 = new TextBox();
            binding1 = new BindingSource();
            button1 = new Button();
            listBox1.Location = new Point(140, 25);
            listBox1.Size = new Size(123, 160);
            textBox1.Location = new Point(23, 70);
            textBox1.Size = new Size(100, 20);
            textBox1.Text = "Wingdings";
            button1.Location = new Point(23, 25);
            button1.Size = new Size(75, 23);
            button1.Text = "Search";
            button1.Click += new EventHandler(this.button1_Click);
            this.ClientSize = new Size(292, 266);
            this.Controls.Add(this.button1);
            this.Controls.Add(this.textBox1);
            this.Controls.Add(this.listBox1);

            MyFontList fonts = new MyFontList();
            for (int i = 0; i < FontFamily.Families.Length; i++)
            {
                if (FontFamily.Families[i].IsStyleAvailable(FontStyle.Regular))
                    fonts.Add(new Font(FontFamily.Families[i], 11.0F, FontStyle.Regular));
            }
            binding1.DataSource = fonts;
            listBox1.DataSource = binding1;
            listBox1.DisplayMember = "Name";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (!binding1.SupportsSearching)
            {
                MessageBox.Show("Cannot search the list.");
            }
            else
            {
                int foundIndex = binding1.Find("Name", textBox1.Text);
                if (foundIndex > -1)
                    listBox1.SelectedIndex = foundIndex;
                else
                    MessageBox.Show("Font was not found.");
            }
        }
    }
    
    public class MyFontList : BindingList<Font>
    {

        protected override bool SupportsSearchingCore
        {
            get { return true; }
        }
        protected override int FindCore(PropertyDescriptor prop, object key)
        {
            // Ignore the prop value and search by family name.
            for (int i = 0; i < Count; ++i)
            {
                if (Items[i].FontFamily.Name.ToLower() == ((string)key).ToLower())
                    return i;
            }
            return -1;
        }
    }
}
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Drawing
Imports System.Text
Imports System.Windows.Forms
Public Class Form1
    Inherits Form

    <STAThread()> _
    Shared Sub Main()
        Application.EnableVisualStyles()
        Application.Run(New Form1())

    End Sub

    Public Sub New()

    End Sub

    Private textBox1 As TextBox
    Private WithEvents button1 As Button
    Private listBox1 As ListBox
    Private components As IContainer
    Private binding1 As BindingSource

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
        listBox1 = New ListBox()
        textBox1 = New TextBox()
        binding1 = New BindingSource()
        button1 = New Button()
        listBox1.Location = New Point(140, 25)
        listBox1.Size = New Size(123, 160)
        textBox1.Location = New Point(23, 70)
        textBox1.Size = New Size(100, 20)
        textBox1.Text = "Wingdings"
        button1.Location = New Point(23, 25)
        button1.Size = New Size(75, 23)
        button1.Text = "Search"
        Me.ClientSize = New Size(292, 266)
        Me.Controls.Add(Me.button1)
        Me.Controls.Add(Me.textBox1)
        Me.Controls.Add(Me.listBox1)

        Dim fonts As New MyFontList()
        Dim i As Integer
        For i = 0 To FontFamily.Families.Length - 1
            If FontFamily.Families(i).IsStyleAvailable(FontStyle.Regular) Then
                fonts.Add(New Font(FontFamily.Families(i), 11.0F, FontStyle.Regular))
            End If
        Next i
        binding1.DataSource = fonts
        listBox1.DataSource = binding1
        listBox1.DisplayMember = "Name"

    End Sub
    Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) _
        Handles button1.Click

        If binding1.SupportsSearching <> True Then
            MessageBox.Show("Cannot search the list.")
        Else
            Dim foundIndex As Integer = binding1.Find("Name", textBox1.Text)
            If foundIndex > -1 Then
                listBox1.SelectedIndex = foundIndex
            Else
                MessageBox.Show("Font was not found.")
            End If
        End If

    End Sub
End Class

Public Class MyFontList
    Inherits BindingList(Of Font)

    Protected Overrides ReadOnly Property SupportsSearchingCore() As Boolean
        Get
            Return True
        End Get
    End Property
    
    Protected Overrides Function FindCore(ByVal prop As PropertyDescriptor, _
        ByVal key As Object) As Integer
        ' Ignore the prop value and search by family name.
        Dim i As Integer
        While i < Count
            If Items(i).FontFamily.Name.ToLower() = CStr(key).ToLower() Then
                Return i
            End If
            i += 1
        End While

        Return -1
    End Function
End Class

Comentários

O BindingSource componente atende a muitas finalidades. Primeiro, ele simplifica os controles de associação em um formulário para dados fornecendo gerenciamento de moeda, notificação de alterações e outros serviços entre controles de Windows Forms e fontes de dados. Isso é feito anexando o BindingSource componente à fonte de dados usando a DataSource propriedade . Para cenários de associação complexos, opcionalmente, você pode definir a DataMember propriedade como uma coluna ou lista específica na fonte de dados. Em seguida, você associa os controles ao BindingSource. Toda a interação adicional com os dados é realizada com chamadas para o BindingSource componente. Para obter exemplos sobre como o BindingSource pode simplificar o processo de associação, consulte How to: Bind Windows Forms Controls to DBNull Database Values and How to: Handle Errors and Exceptions that Occur with Databinding. A navegação e a atualização da fonte de dados são realizadas por meio de métodos como MoveNext, MoveLaste Remove. Operações como classificação e filtragem são tratadas por meio das Sort propriedades e Filter . Para obter mais informações sobre como usar a classificação e a filtragem com o BindingSource, consulte How to: Sort and Filter ADO.NET Data with the Windows Forms BindingSource Component.

Além disso, o BindingSource componente pode atuar como uma fonte de dados fortemente tipada. Normalmente, o tipo da fonte de dados subjacente é corrigido por meio de um dos seguintes mecanismos:

  • Use o Add método para adicionar um item ao BindingSource componente .

  • Defina a DataSource propriedade como uma lista, objeto único ou tipo.

Ambos os mecanismos criam uma lista fortemente tipada. Para obter mais informações sobre como usar o BindingSource para associar a um tipo, consulte Como associar um controle de Windows Forms a um tipo. Você também pode usar o BindingSource para associar seus controles a um objeto de fábrica. Para obter mais informações sobre como fazer isso, consulte Como associar um controle Windows Forms a um objeto Factory.

Observação

Como um BindingSource lida com fontes de dados simples e complexas, a terminologia é problemática. Dentro dessa documentação de classe, a lista de termos refere-se a uma coleta de dados dentro da fonte de dados hospedada e o item indica um único elemento. Ao discutir a funcionalidade associada a fontes de dados complexas, a tabela e a linha de termos equivalentes são usadas.

BindingSource fornece membros para acessar os dados subjacentes. O item atual pode ser recuperado por meio da Current propriedade e toda a lista pode ser recuperada por meio da List propriedade . As operações de edição têm suporte no item atual por meio Current dos RemoveCurrentmétodos , EndEdite CancelEdit e AddAddNew . Embora o gerenciamento de moedas seja tratado automaticamente para todos os tipos de fonte de dados subjacentes, essa classe expõe vários eventos, como CurrentItemChanged e DataSourceChanged, que permitem a personalização.

As fontes de dados associadas a um BindingSource componente também podem ser navegadas e gerenciadas com a BindingNavigator classe , que fornece uma interface do usuário (interface do usuário) semelhante a VCR para navegar em itens em uma lista. Embora BindingNavigator possa ser associada a qualquer fonte de dados, ela foi projetada para se integrar a um BindingSource componente por meio de sua BindingNavigator.BindingSource propriedade.

A propriedade padrão para a BindingSource classe é DataSource. O evento padrão é CurrentChanged.

Cuidado

Muitos dos membros da BindingSource classe operam na lista subjacente representada pela List propriedade e simplesmente referem sua operação à lista subjacente. Portanto, quando o BindingSource está associado a uma implementação personalizada de IList, o comportamento exato desses membros pode ser diferente do comportamento descrito na documentação da classe. Por exemplo, o RemoveAt método chama IList.RemoveAt. A BindingSource documentação descreve o RemoveAt método com a compreensão de que o RemoveAt método para o subjacente IList está implementado corretamente.

Construtores

BindingSource()

Inicializa uma nova instância da classe BindingSource com os valores da propriedade padrão.

BindingSource(IContainer)

Inicializa uma nova instância da classe BindingSource e adiciona o BindingSource ao contêiner especificado.

BindingSource(Object, String)

Inicializa uma nova instância da classe BindingSource com a fonte de dados e o membro de dados especificados.

Propriedades

AllowEdit

Obtém um valor que indica se os itens da lista subjacente podem ser editados.

AllowNew

Obtém ou define um valor que indica se o método AddNew() pode ser usado para adicionar itens à lista.

AllowRemove

Obtém um valor que indica se itens podem ser removidos da lista subjacente.

CanRaiseEvents

Obtém um valor que indica se o componente pode acionar um evento.

(Herdado de Component)
Container

Obtém o IContainer que contém o Component.

(Herdado de Component)
Count

Obtém o número total de itens na lista subjacente, levando o valor Filter atual em consideração.

CurrencyManager

Obtém o gerenciador de moeda associado a este BindingSource.

Current

Obtém o item atual na lista.

DataMember

Obtém ou define a lista específica na fonte de dados à qual o conector está atualmente associado.

DataSource

Obtém ou define a fonte de dados a que o conector é associado.

DesignMode

Obtém um valor que indica se o Component está no modo de design no momento.

(Herdado de Component)
Events

Obtém a lista de manipuladores de eventos que estão anexados a este Component.

(Herdado de Component)
Filter

Obtém ou define a expressão usada para filtrar quais linhas são exibidas.

IsBindingSuspended

Obtém um valor que indica se a associação da lista está suspensa.

IsFixedSize

Obtém um valor que indica se a lista subjacente tem um tamanho fixo.

IsReadOnly

Obtém um valor que indica se a lista subjacente é somente leitura.

IsSorted

Obtém um valor que indica se os itens da lista subjacente estão classificados.

IsSynchronized

Obtém um valor que indica se o acesso à coleção é sincronizado (thread-safe).

Item[Int32]

Obtém ou define o elemento da lista no índice especificado.

List

Obtém a lista a qual o conector está associado.

Position

Obtém ou define o índice do item atual na lista subjacente.

RaiseListChangedEvents

Obtém ou define um valor que indica se os eventos ListChanged devem ser gerados.

Site

Obtém ou define o ISite do Component.

(Herdado de Component)
Sort

Obtém ou define os nomes de coluna usados para classificação e a ordem de classificação para exibir as linhas na fonte de dados.

SortDescriptions

Obtém a coleção de descrições de classificação aplicadas à fonte de dados.

SortDirection

Obtém a direção em que os itens na lista são classificados.

SortProperty

Obtém o PropertyDescriptor que está sendo usado para classificar a lista.

SupportsAdvancedSorting

Obtém um valor que indica se a fonte de dados dá suporte à classificação de várias colunas.

SupportsChangeNotification

Obtém um valor que indica se a fonte de dados dá suporte à notificação de alteração.

SupportsFiltering

Obtém um valor que indica se a fonte de dados dá suporte à filtragem.

SupportsSearching

Obtém um valor que indica se a fonte de dados é compatível com a pesquisa com o método Find(PropertyDescriptor, Object).

SupportsSorting

Obtém um valor que indica se a fonte de dados dá suporte à classificação.

SyncRoot

Obtém um objeto que pode ser usado para sincronizar o acesso à lista subjacente.

Métodos

Add(Object)

Adiciona um item existente à lista interna.

AddNew()

Adiciona um novo item à lista subjacente.

ApplySort(ListSortDescriptionCollection)

Classifica a fonte de dados com as descrições de classificação especificadas.

ApplySort(PropertyDescriptor, ListSortDirection)

Classifica a fonte de dados usando a direção de classificação e o descritor de propriedade especificados.

CancelEdit()

Cancela a operação de edição atual.

Clear()

Remove todos os elementos da lista.

Contains(Object)

Determina se um objeto é um item na lista.

CopyTo(Array, Int32)

Copia o conteúdo do List para a matriz especificada, começando no valor de índice especificado.

CreateObjRef(Type)

Cria um objeto que contém todas as informações relevantes necessárias para gerar um proxy usado para se comunicar com um objeto remoto.

(Herdado de MarshalByRefObject)
Dispose()

Libera todos os recursos usados pelo Component.

(Herdado de Component)
Dispose(Boolean)

Libera os recursos não gerenciados usados pelo BindingSource e opcionalmente libera os recursos gerenciados.

EndEdit()

Aplica as alterações pendentes à fonte de dados subjacente.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
Find(PropertyDescriptor, Object)

Pesquisa o índice do item que tem o descritor de propriedade especificado.

Find(String, Object)

Retorna o índice do item na lista com o nome e valor da propriedade especificada.

GetEnumerator()

Recupera um enumerador para o List.

GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetItemProperties(PropertyDescriptor[])

Recupera uma matriz de objetos PropertyDescriptor que representa as propriedades vinculáveis do tipo de lista da fonte de dados.

GetLifetimeService()
Obsoleto.

Recupera o objeto de serviço de tempo de vida atual que controla a política de ciclo de vida para esta instância.

(Herdado de MarshalByRefObject)
GetListName(PropertyDescriptor[])

Obtém o nome da lista fornecendo os dados para a associação.

GetRelatedCurrencyManager(String)

Obtém o gerenciador de moeda relacionado para o membro de dados especificado.

GetService(Type)

Retorna um objeto que representa um serviço fornecido pelo Component ou pelo seu Container.

(Herdado de Component)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
IndexOf(Object)

Pesquisa o objeto especificado e retorna o índice da primeira ocorrência dentro de toda a lista.

InitializeLifetimeService()
Obsoleto.

Obtém um objeto de serviço de tempo de vida para controlar a política de tempo de vida para essa instância.

(Herdado de MarshalByRefObject)
Insert(Int32, Object)

Insere um item na lista no índice especificado.

MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
MemberwiseClone(Boolean)

Cria uma cópia superficial do objeto MarshalByRefObject atual.

(Herdado de MarshalByRefObject)
MoveFirst()

Move para o primeiro item na lista.

MoveLast()

Move para o último item na lista.

MoveNext()

Move para o próximo item na lista.

MovePrevious()

Move para o item anterior na lista.

OnAddingNew(AddingNewEventArgs)

Aciona o evento AddingNew.

OnBindingComplete(BindingCompleteEventArgs)

Aciona o evento BindingComplete.

OnCurrentChanged(EventArgs)

Aciona o evento CurrentChanged.

OnCurrentItemChanged(EventArgs)

Aciona o evento CurrentItemChanged.

OnDataError(BindingManagerDataErrorEventArgs)

Aciona o evento DataError.

OnDataMemberChanged(EventArgs)

Aciona o evento DataMemberChanged.

OnDataSourceChanged(EventArgs)

Aciona o evento DataSourceChanged.

OnListChanged(ListChangedEventArgs)

Aciona o evento ListChanged.

OnPositionChanged(EventArgs)

Aciona o evento PositionChanged.

Remove(Object)

Remove o item especificado da lista.

RemoveAt(Int32)

Remove o item no índice especificado da lista.

RemoveCurrent()

Remove o item atual da lista.

RemoveFilter()

Remove o filtro associado ao BindingSource.

RemoveSort()

Remove a classificação associada ao BindingSource.

ResetAllowNew()

Reinicializa a propriedade AllowNew.

ResetBindings(Boolean)

Faz com que um controle associado ao BindingSource releia todos os itens na lista e atualize os valores exibidos.

ResetCurrentItem()

Faz com que um controle associado ao BindingSource releia o item selecionado no momento e atualize seu valor exibido.

ResetItem(Int32)

Faz com que um controle associado ao BindingSource releia o item no índice especificado e atualize o valor exibido.

ResumeBinding()

Retome a vinculação de dados.

SuspendBinding()

Suspende a vinculação de dados para evitar alterações de atualização da fonte de dados associada.

ToString()

Retorna um String que contém o nome do Component, se houver. Esse método não deve ser substituído.

(Herdado de Component)

Eventos

AddingNew

Ocorre antes que um item seja adicionado à lista subjacente.

BindingComplete

Ocorre quando todos os clientes foram vinculados a esse BindingSource.

CurrentChanged

Ocorre quando o item associado no momento é alterado.

CurrentItemChanged

Ocorre quando o valor da propriedade Current foi alterado.

DataError

Ocorre quando uma exceção relacionada à moeda é tratada silenciosamente pelo BindingSource.

DataMemberChanged

Ocorre quando o valor da propriedade DataMember é alterado.

DataSourceChanged

Ocorre quando o valor da propriedade DataSource é alterado.

Disposed

Ocorre quando o componente é disposto por uma chamada ao método Dispose().

(Herdado de Component)
ListChanged

Ocorre quando a lista subjacente muda ou um item na lista é alterado.

PositionChanged

Ocorre depois que o valor da propriedade Position é alterado.

Implantações explícitas de interface

IBindingList.AddIndex(PropertyDescriptor)

Adiciona o PropertyDescriptor aos índices usados para pesquisa.

IBindingList.RemoveIndex(PropertyDescriptor)

Remove o PropertyDescriptor dos índices usados para pesquisa.

ICancelAddNew.CancelNew(Int32)

Descarta um novo item pendente da coleção.

ICancelAddNew.EndNew(Int32)

Confirma um novo item pendente para a coleção.

ISupportInitialize.BeginInit()

Sinaliza o BindingSource de que a inicialização está sendo iniciada.

ISupportInitialize.EndInit()

Sinaliza o BindingSource de que a inicialização está concluída.

ISupportInitializeNotification.Initialized

Ocorre quando a BindingSource é inicializada.

ISupportInitializeNotification.IsInitialized

Obtém um valor que indica se o BindingSource é inicializado.

Métodos de Extensão

Cast<TResult>(IEnumerable)

Converte os elementos de um IEnumerable para o tipo especificado.

OfType<TResult>(IEnumerable)

Filtra os elementos de um IEnumerable com base em um tipo especificado.

AsParallel(IEnumerable)

Habilita a paralelização de uma consulta.

AsQueryable(IEnumerable)

Converte um IEnumerable em um IQueryable.

Aplica-se a

Confira também