Compartir a través de


BindingSource Clase

Definición

Encapsula el origen de datos de un formulario.

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
Herencia
Atributos
Implementaciones

Ejemplos

En el ejemplo de código siguiente se muestra un ListBox enlazado a .BindingSource BindingSource está enlazado a un BindingList<T> objeto que contiene una lista de fuentes.

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

Comentarios

El BindingSource componente sirve para muchos propósitos. En primer lugar, simplifica los controles de enlace de un formulario a los datos proporcionando administración de monedas, notificación de cambios y otros servicios entre Windows Forms controles y orígenes de datos. Esto se logra adjuntando el BindingSource componente al origen de datos mediante la DataSource propiedad . Para escenarios de enlace complejos, puede establecer opcionalmente la DataMember propiedad en una columna o lista específica en el origen de datos. A continuación, enlazará controles a .BindingSource Toda la interacción adicional con los datos se realiza con llamadas al BindingSource componente. Para obtener ejemplos sobre cómo BindingSource puede simplificar el proceso de enlace, vea How to: Bind Windows Forms Controls to DBNull Database Values and How to: Handle Errors and Exceptions that Occur with Databinding. La navegación y actualización del origen de datos se realiza a través de métodos como MoveNext, MoveLasty Remove. Las operaciones como la ordenación y el filtrado se controlan a través de las Sort propiedades y Filter . Para obtener más información sobre el uso de la ordenación y el filtrado con BindingSource, vea How to: Sort and Filter ADO.NET Data with the Windows Forms BindingSource Component.

Además, el BindingSource componente puede actuar como un origen de datos fuertemente tipado. Normalmente, el tipo del origen de datos subyacente se fija a través de uno de los siguientes mecanismos:

  • Use el Add método para agregar un elemento al BindingSource componente.

  • Establezca la DataSource propiedad en una lista, un solo objeto o tipo.

Ambos mecanismos crean una lista fuertemente tipada. Para obtener más información sobre cómo usar para BindingSource enlazar a un tipo, vea Cómo: Enlazar un control de Windows Forms a un tipo. También puede usar BindingSource para enlazar los controles a un objeto de fábrica. Para obtener más información sobre cómo hacerlo, vea Cómo: Enlazar un control de Windows Forms a un objeto Factory.

Nota

Dado que un BindingSource controla orígenes de datos simples y complejos, la terminología es problemática. En esta documentación de clase, la lista de términos hace referencia a una colección de datos dentro del origen de datos hospedado y el elemento denota un único elemento. Al analizar la funcionalidad asociada a orígenes de datos complejos, se usan la tabla y fila de términos equivalentes.

BindingSource proporciona miembros para acceder a los datos subyacentes. El elemento actual se puede recuperar a través de la Current propiedad y se puede recuperar toda la lista a través de la List propiedad . Las operaciones de edición se admiten en el elemento actual a través Current de y los RemoveCurrentmétodos , EndEditCancelEdit y y AddAddNew . Aunque la administración de monedas se controla automáticamente para todos los tipos de origen de datos subyacentes, esta clase expone una serie de eventos, como CurrentItemChanged y DataSourceChanged, que permiten la personalización.

Los orígenes de datos enlazados a un BindingSource componente también se pueden navegar y administrar con la BindingNavigator clase , que proporciona una interfaz de usuario (UI) similar a VCR para navegar por elementos dentro de una lista. Aunque BindingNavigator se puede enlazar a cualquier origen de datos, se diseñó para integrarse con un BindingSource componente a través de su BindingNavigator.BindingSource propiedad .

La propiedad predeterminada de la BindingSource clase es DataSource. El evento predeterminado es CurrentChanged.

Precaución

Muchos de los miembros de la BindingSource clase operan en la lista subyacente representada por la List propiedad y simplemente hacen referencia a su operación a la lista subyacente. Por lo tanto, cuando BindingSource está enlazado a una implementación personalizada de IList, el comportamiento exacto de estos miembros puede diferir del comportamiento descrito en la documentación de la clase. Por ejemplo, el RemoveAt método llama a IList.RemoveAt. En la documentación se BindingSource describe el RemoveAt método con la comprensión de que el RemoveAt método para el subyacente IList se implementa correctamente.

Constructores

BindingSource()

Inicializa una nueva instancia de la clase BindingSource utilizando los valores de propiedad predeterminados.

BindingSource(IContainer)

Inicializa una nueva instancia de la clase BindingSource y agrega BindingSource al contenedor especificado.

BindingSource(Object, String)

Inicializa una nueva instancia de la clase BindingSource con el origen de datos especificado y el miembro de datos que se hayan especificado.

Propiedades

AllowEdit

Obtiene un valor que indica si se pueden editar los elementos de la lista subyacente.

AllowNew

Obtiene o establece un valor que indica si el método AddNew() se puede utilizar para agregar elementos a la lista.

AllowRemove

Obtiene un valor que indica si se pueden quitar elementos de la lista subyacente.

CanRaiseEvents

Obtiene un valor que indica si el componente puede generar un evento.

(Heredado de Component)
Container

Obtiene la interfaz IContainer que contiene la clase Component.

(Heredado de Component)
Count

Obtiene el número total de elementos en la lista subyacente, teniendo el valor Filter actual en cuenta.

CurrencyManager

Obtiene el administrador de moneda asociado a este BindingSource.

Current

Obtiene el elemento actual de la lista.

DataMember

Obtiene o establece la lista concreta del origen de datos a la que está enlazado el conector en ese momento.

DataSource

Obtiene o establece el origen de datos con el que está enlazado el conector.

DesignMode

Obtiene un valor que indica si Component está actualmente en modo de diseño.

(Heredado de Component)
Events

Obtiene la lista de controladores de eventos asociados a Component.

(Heredado de Component)
Filter

Obtiene o establece la expresión utilizada para filtrar las filas que se deben mostrar.

IsBindingSuspended

Obtiene un valor que indica si se ha suspendido el enlace a la lista.

IsFixedSize

Obtiene un valor que indica si la lista subyacente tiene un tamaño fijo.

IsReadOnly

Obtiene un valor que indica si la lista subyacente es de solo lectura.

IsSorted

Obtiene un valor que indica si los elementos de la lista subyacente están ordenados.

IsSynchronized

Obtiene un valor que indica si el acceso a la colección está sincronizado (es seguro para la ejecución de subprocesos).

Item[Int32]

Obtiene o establece el elemento de lista que se encuentra en el índice especificado.

List

Obtiene la lista a la que está enlazada el conector.

Position

Obtiene o establece el índice del elemento actual de la lista subyacente.

RaiseListChangedEvents

Obtiene o establece un valor que indica si deben producirse eventos ListChanged.

Site

Obtiene o establece ISite de Component.

(Heredado de Component)
Sort

Obtiene o establece los nombres de columna utilizados para ordenar y el criterio de ordenación para ver las filas del origen de datos.

SortDescriptions

Obtiene la colección de descripciones de ordenación aplicada al origen de datos.

SortDirection

Obtiene la dirección en la que están ordenados los elementos de la lista.

SortProperty

Obtiene el PropertyDescriptor que se utiliza para ordenar la lista.

SupportsAdvancedSorting

Obtiene un valor que indica si el origen de datos admite la ordenación de varias columnas.

SupportsChangeNotification

Obtiene un valor que indica si el origen de datos admite la notificación de cambios.

SupportsFiltering

Obtiene un valor que indica si el origen de datos admite el filtrado.

SupportsSearching

Obtiene un valor que indica si el origen de datos permite realizar búsquedas con el método Find(PropertyDescriptor, Object).

SupportsSorting

Obtiene un valor que indica si el origen de datos admite la ordenación.

SyncRoot

Obtiene un objeto que se puede utilizar para sincronizar el acceso a la lista subyacente.

Métodos

Add(Object)

Agrega un elemento existente a la lista interna.

AddNew()

Agrega un nuevo elemento a la lista subyacente.

ApplySort(ListSortDescriptionCollection)

Ordena el origen de datos con las descripciones de ordenación especificadas.

ApplySort(PropertyDescriptor, ListSortDirection)

Ordena el origen de datos utilizando el descriptor de propiedad y el sentido de ordenación especificados.

CancelEdit()

Cancela la operación de edición actual.

Clear()

Quita todos los elementos de la lista.

Contains(Object)

Determina si un objeto es un elemento de la lista.

CopyTo(Array, Int32)

Copia el contenido de List a la matriz especificada, comenzando en el valor de índice especificado.

CreateObjRef(Type)

Crea un objeto que contiene toda la información relevante necesaria para generar un proxy utilizado para comunicarse con un objeto remoto.

(Heredado de MarshalByRefObject)
Dispose()

Libera todos los recursos que usa Component.

(Heredado de Component)
Dispose(Boolean)

Libera los recursos no administrados que usa BindingSource y, de forma opcional, libera los recursos administrados.

EndEdit()

Aplica los cambios pendientes al origen de datos subyacente.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
Find(PropertyDescriptor, Object)

Busca el índice del elemento que tiene el descriptor de propiedad especificado.

Find(String, Object)

Devuelve el índice del elemento de la lista con el nombre y el valor de propiedad especificados.

GetEnumerator()

Recupera un enumerador para List.

GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetItemProperties(PropertyDescriptor[])

Recupera una matriz de objetos PropertyDescriptor que representan las propiedades enlazables del tipo de lista del origen de datos.

GetLifetimeService()
Obsoletos.

Recupera el objeto de servicio de duración actual que controla la directiva de duración de esta instancia.

(Heredado de MarshalByRefObject)
GetListName(PropertyDescriptor[])

Obtiene el nombre de la lista que suministra datos para el enlace.

GetRelatedCurrencyManager(String)

Obtiene el administrador de moneda relacionado para el miembro de datos especificado.

GetService(Type)

Devuelve un objeto que representa el servicio suministrado por Component o por Container.

(Heredado de Component)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
IndexOf(Object)

Busca el objeto especificado y devuelve el índice de la primera aparición en toda la lista.

InitializeLifetimeService()
Obsoletos.

Obtiene un objeto de servicio de duración para controlar la directiva de duración de esta instancia.

(Heredado de MarshalByRefObject)
Insert(Int32, Object)

Inserta un elemento en el índice especificado de la lista.

MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
MemberwiseClone(Boolean)

Crea una copia superficial del objeto MarshalByRefObject actual.

(Heredado de MarshalByRefObject)
MoveFirst()

Se desplaza al primer elemento de la lista.

MoveLast()

Se desplaza al último elemento de la lista.

MoveNext()

Se desplaza al siguiente elemento de la lista.

MovePrevious()

Se desplaza al elemento anterior de la lista.

OnAddingNew(AddingNewEventArgs)

Genera el evento AddingNew.

OnBindingComplete(BindingCompleteEventArgs)

Genera el evento BindingComplete.

OnCurrentChanged(EventArgs)

Genera el evento CurrentChanged.

OnCurrentItemChanged(EventArgs)

Genera el evento CurrentItemChanged.

OnDataError(BindingManagerDataErrorEventArgs)

Genera el evento DataError.

OnDataMemberChanged(EventArgs)

Genera el evento DataMemberChanged.

OnDataSourceChanged(EventArgs)

Genera el evento DataSourceChanged.

OnListChanged(ListChangedEventArgs)

Genera el evento ListChanged.

OnPositionChanged(EventArgs)

Genera el evento PositionChanged.

Remove(Object)

Quita de la lista el elemento especificado.

RemoveAt(Int32)

Quita el elemento situado en el índice especificado de la lista.

RemoveCurrent()

Quita el elemento actual de la lista.

RemoveFilter()

Quita el filtro asociado a BindingSource.

RemoveSort()

Quita la ordenación asociada a BindingSource.

ResetAllowNew()

Reinicializa la propiedad AllowNew.

ResetBindings(Boolean)

Hace que un control enlazado a BindingSource vuelva a leer todos los elementos de la lista y actualice los valores mostrados.

ResetCurrentItem()

Hace que un control enlazado al BindingSource vuelva a leer el elemento seleccionado en ese momento y actualice el valor que se está mostrando.

ResetItem(Int32)

Hace que un control enlazado al BindingSource vuelva a leer el elemento situado en el índice especificado y actualice su valor mostrado.

ResumeBinding()

Reanuda el enlace de datos.

SuspendBinding()

Suspende el enlace a datos para impedir que los cambios actualicen el origen de datos enlazado.

ToString()

Devuelve una String que contiene el nombre del Component, si existe. Este método no se debe invalidar.

(Heredado de Component)

Eventos

AddingNew

Se produce antes de que se agregue un elemento a la lista subyacente.

BindingComplete

Se produce cuando todos los clientes se han enlazado a este BindingSource.

CurrentChanged

Se produce cuando cambia el elemento enlazado actualmente.

CurrentItemChanged

Se produce cuando cambia un valor de la propiedad Current.

DataError

Aparece cuando el BindingSource controla en modo silencioso una excepción relacionada con la moneda.

DataMemberChanged

Se produce cuando cambia el valor de la propiedad DataMember.

DataSourceChanged

Se produce cuando cambia el valor de la propiedad DataSource.

Disposed

Tiene lugar cuando una llamada elimina el componente mediante una llamada al método Dispose().

(Heredado de Component)
ListChanged

Se produce cuando cambia la lista subyacente o se modifica un elemento de la lista.

PositionChanged

Se produce después de haber cambiado el valor de la propiedad Position.

Implementaciones de interfaz explícitas

IBindingList.AddIndex(PropertyDescriptor)

Agrega PropertyDescriptor a los índices utilizados para las búsquedas.

IBindingList.RemoveIndex(PropertyDescriptor)

Quita el PropertyDescriptor de los índices utilizados para las búsquedas.

ICancelAddNew.CancelNew(Int32)

Descarta un nuevo elemento pendiente de la colección.

ICancelAddNew.EndNew(Int32)

Confirma un nuevo elemento pendiente en la colección.

ISupportInitialize.BeginInit()

Indica al BindingSource que se está iniciando la inicialización.

ISupportInitialize.EndInit()

Indica al BindingSource que la inicialización ha finalizado.

ISupportInitializeNotification.Initialized

Se produce cuando se inicializa BindingSource.

ISupportInitializeNotification.IsInitialized

Obtiene un valor que indica si el objeto BindingSource está inicializado.

Métodos de extensión

Cast<TResult>(IEnumerable)

Convierte los elementos de IEnumerable en el tipo especificado.

OfType<TResult>(IEnumerable)

Filtra los elementos de IEnumerable en función de un tipo especificado.

AsParallel(IEnumerable)

Habilita la paralelización de una consulta.

AsQueryable(IEnumerable)

Convierte una interfaz IEnumerable en IQueryable.

Se aplica a

Consulte también