Esta documentación está archivada y no tiene mantenimiento.

BindingSource (Clase)

Encapsula el origen de datos de un formulario.

Espacio de nombres: System.Windows.Forms
Ensamblado: System.Windows.Forms (en system.windows.forms.dll)

public class BindingSource : Component, IBindingListView, IBindingList, IList, 
	ICollection, IEnumerable, ITypedList, ICancelAddNew, ISupportInitializeNotification, 
	ISupportInitialize, ICurrencyManagerProvider
public class BindingSource extends Component implements IBindingListView, IBindingList, 
	IList, ICollection, IEnumerable, ITypedList, ICancelAddNew, 
	ISupportInitializeNotification, ISupportInitialize, ICurrencyManagerProvider
public class BindingSource extends Component implements IBindingListView, IBindingList, 
	IList, ICollection, IEnumerable, ITypedList, ICancelAddNew, 
	ISupportInitializeNotification, ISupportInitialize, ICurrencyManagerProvider
No aplicable.

El componente BindingSource se utiliza para varios fines. En primer lugar, simplifica el enlace de los controles de un formulario a datos al proporcionar administración de moneda, notificación de cambios y otros servicios entre controles y orígenes de datos de Windows Forms. Esto se consigue asociando el componente BindingSource al origen de datos utilizando la propiedad DataSource. En los casos de enlace complejos, puede establecer opcionalmente la propiedad DataMember en una columna o lista determinada del origen de datos. A continuación, se enlazan los controles a BindingSource. Cualquier otra interacción con los datos se realiza con llamadas al componente BindingSource. La exploración y la actualización del origen de datos se realizan a través de métodos como MoveNext, MoveLast y Remove. Las operaciones como la ordenación y el filtrado se controlan por medio de las propiedades Sort y Filter. Para obtener más información sobre cómo utilizar la ordenación y el filtrado con BindingSource, vea Cómo: Ordenar y filtrar datos ADO.NET con el componente BindingSource de formularios Windows Forms.

Además, el componente BindingSource puede actuar como un origen de datos con establecimiento inflexible de tipos. Normalmente el tipo del origen de datos subyacente se fija mediante uno de los mecanismos siguientes:

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

  • Establecer la propiedad DataSource en una lista, objeto único o tipo.

Ambos mecanismos crean una lista con establecimiento inflexible de tipos. Para obtener más información sobre cómo utilizar BindingSource para enlazar a un tipo, vea Cómo: Enlazar un control de Windows Forms a un tipo. También puede utilizar BindingSource para enlazar sus controles a un objeto de generador. Para obtener más información sobre la forma de realizar esto último, vea Cómo: Enlazar un control de Windows Forms a un objeto Factory.

NotaNota:

Dado que BindingSource controla orígenes de datos simples y complejos, la terminología plantea problemas. Dentro de esta documentación de clase, el término lista se refiere a una colección de datos contenida en el origen de datos alojado; y elemento corresponde a un único elemento. Al explicar la funcionalidad asociada con orígenes datos complejos, se utilizan los términos equivalentes tabla y fila.

BindingSource proporciona miembros para tener acceso a los datos subyacentes. El elemento actual se puede recuperar mediante la propiedad Current y la lista completa se puede recuperar a través de la propiedad List. Las operaciones de edición se admiten en el elemento actual a través de los métodos Current, RemoveCurrent, EndEdit, CancelEdit, Add y AddNew. Aunque la administración de moneda se controla automáticamente para todos los tipos de origen de datos subyacentes, esta clase expone varios eventos, como CurrentItemChanged y DataSourceChanged, que permiten la personalización.

Los orígenes de datos enlazados a un componente BindingSource también se pueden explorar y administrar con la clase BindingNavigator, que proporciona una interfaz de usuario de tipo VCR para explorar los elementos de una lista. Aunque BindingNavigator se puede enlazar a cualquier origen de datos, está diseñado para integrarse con un componente BindingSource a través de su propiedad BindingNavigator.BindingSource.

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

Nota de precauciónPrecaución:

Muchos de los miembros de la clase BindingSource actúan en la lista subyacente representada por la propiedad List y simplemente refieren su operación a la lista subyacente. Por tanto, cuando el BindingSource se enlaza 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 método RemoveAt llama a IList.RemoveAt. En la documentación de BindingSource se describe el método RemoveAt partiendo de la base de que el método RemoveAt para la IList subyacente se ha implementado correctamente.

En el ejemplo de código siguiente se muestra un ListBox enlazado a un BindingSource. El BindingSource se enlaza a un BindingList 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 != true)
                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;
        }


    }
  
}

System.Object
   System.MarshalByRefObject
     System.ComponentModel.Component
      System.Windows.Forms.BindingSource

Los miembros estáticos públicos (Shared en Visual Basic) de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Windows 98, Windows 2000 Service Pack 4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter

Microsoft .NET Framework 3.0 es compatible con Windows Vista, Microsoft Windows XP SP2 y Windows Server 2003 SP1.

.NET Framework

Compatible con: 3.0, 2.0

.NET Compact Framework

Compatible con: 2.0
Mostrar: