BindingSource Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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 != 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;
}
}
}
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. |