Exportar (0) Imprimir
Expandir todo

BindingContext (Clase)

Actualización: noviembre 2007

Administra la colección de objetos BindingManagerBase para cualquier objeto que herede de la clase Control.

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

public class BindingContext : ICollection, 
	IEnumerable
public class BindingContext implements ICollection, 
	IEnumerable
public class BindingContext implements ICollection, IEnumerable

Cada formulario Windows Forms tiene al menos un objeto BindingContext que administra los objetos BindingManagerBase del formulario. Puesto que la clase BindingManagerBase es abstracta, el tipo de valor devuelto por la propiedad Item es CurrencyManager o PropertyManager.. Si el origen de datos es un objeto que sólo puede devolver una propiedad (en lugar de una lista de objetos), Type será PropertyManager. Por ejemplo, si especifica TextBox como origen de datos, se devolverá PropertyManager. Por otra parte, si el origen de datos es un objeto que implementa IList o IBindingList, se devolverá CurrencyManager.

Para cada origen de datos de un formulario Windows Forms hay un único CurrencyManager o PropertyManager. Como puede haber varios orígenes de datos asociados a un formulario Windows Forms, BindingContext le permite recuperar cualquier CurrencyManager concreto asociado a un origen de datos.

dek6b6k3.alert_note(es-es,VS.90).gifNota:

Cuando se utiliza la propiedad Item, BindingContext crea un nuevo BindingManagerBase si todavía no existe. Esto puede llevar a confusiones, ya que quizás el objeto devuelto no administre la lista que se desea (o cualquier lista). Para impedir que se devuelva un BindingManagerBase no válido, utilice el método Contains para determinar si el BindingManagerBase previsto ya existe.

Si se utiliza un control contenedor, como GroupBox, Panel o TabControl, para incluir controles con enlace a datos, se puede crear un objeto BindingContext sólo para ese control contenedor y sus controles. Después, cada parte de su formulario puede administrarse mediante su propio BindingManagerBase. Vea el constructor BindingContext con el fin de obtener más información acerca de la creación de varios objetos BindingManagerBase para el mismo origen de datos.

Si agrega un control TextBox a un formulario y lo enlaza a una columna de una tabla de un conjunto de datos, el control se comunica con el BindingContext de ese formulario. BindingContext, a su vez, habla con el CurrencyManager específico para esa asociación de datos. Si consultara la propiedad Position del CurrencyManager, informaría del registro actual para el enlace de ese control TextBox. En el ejemplo de código siguiente se enlaza un control TextBox a la columna FirstName de una tabla Customers del conjunto de datos dataSet1 mediante el BindingContext del formulario donde se encuentra.

textBox1.DataBindings.Add("Text", dataSet1, "Customers.FirstName");


Puede agregar un segundo control TextBox (TextBox2) al formulario y enlazarlo a la columna LastName de la tabla Customers del mismo conjunto de datos. BindingContext conoce el primer enlace (TextBox1 con Customers.FirstName), por lo que usaría el mismo CurrencyManager, ya que ambos cuadros de texto están enlazados al mismo conjunto de datos (DataSet1).

textBox2.DataBindings.Add("Text", dataSet1, "Customers.LastName");


Si enlaza TextBox2 a un conjunto de datos diferente, BindingContext crea y administra un segundo CurrencyManager.

Es importante ser coherente en la forma de establecer las propiedades DataSource y DisplayMember; de lo contrario, BindingContext creará varios administradores de moneda para el mismo conjunto de datos, lo que dará lugar a errores. En el ejemplo de código siguiente se muestran algunas maneras de establecer las propiedades y sus objetos BindingContext asociados. Puede establecer las propiedades utilizando cualquiera de los métodos siguientes, siempre y cuando sea coherente en todo el código.

comboBox1.DataSource = DataSet1;
comboBox1.DisplayMember = "Customers.FirstName";
this.BindingContext[dataSet1, "Customers"].Position = 1;


comboBox1.DataSource = DataSet1.Customers;
comboBox1.DisplayMember = "FirstName";
this.BindingContext[dataSet1.Customers].Position = 1;


dek6b6k3.alert_note(es-es,VS.90).gifNota:

La mayoría de las aplicaciones de Windows Forms se enlazan mediante un BindingSource. El componente BindingSource encapsula un CurrencyManager y expone la interfaz de programación CurrencyManager. Cuando se utiliza un BindingSource para el enlace, debe utilizar los miembros expuestos por BindingSource para manipular "moneda" (es decir, Position) en lugar de mediante BindingContext.

En el ejemplo de código siguiente se crean cuatro objetos Binding para enlazar cinco controles (un control DateTimePicker y cuatro controles TextBox) a varios orígenes de datos. A continuación, se utiliza BindingContext con el fin de obtener el objeto BindingManagerBase para cada origen de datos.

protected void BindControls()
{
   /* Create two Binding objects for the first two TextBox 
      controls. The data-bound property for both controls 
      is the Text property. The data source is a DataSet 
      (ds). The data member is a navigation path in the form: 
      "TableName.ColumnName". */
   text1.DataBindings.Add(new Binding
   ("Text", ds, "customers.custName"));
   text2.DataBindings.Add(new Binding
   ("Text", ds, "customers.custID"));

   /* Bind the DateTimePicker control by adding a new Binding. 
      The data member of the DateTimePicker is a navigation path:
      TableName.RelationName.ColumnName string. */
   DateTimePicker1.DataBindings.Add(new 
   Binding("Value", ds, "customers.CustToOrders.OrderDate"));

   /* Add event delegates for the Parse and Format events to a 
      new Binding object, and add the object to the third 
      TextBox control's BindingsCollection. The delegates 
      must be added before adding the Binding to the 
      collection; otherwise, no formatting occurs until 
      the Current object of the BindingManagerBase for 
      the data source changes. */
      Binding b = new Binding
      ("Text", ds, "customers.custToOrders.OrderAmount");
   b.Parse+=new ConvertEventHandler(CurrencyStringToDecimal);
   b.Format+=new ConvertEventHandler(DecimalToCurrencyString);
   text3.DataBindings.Add(b);

   // Get the BindingManagerBase for the Customers table. 
   bmCustomers = this.BindingContext [ds, "Customers"];

   /* Get the BindingManagerBase for the Orders table using the 
      RelationName. */ 
   bmOrders = this.BindingContext[ds, "customers.CustToOrders"];

   /* Bind the fourth TextBox control's Text property to the
   third control's Text property. */
   text4.DataBindings.Add("Text", text3, "Text");
}



System.Object
  System.Windows.Forms.BindingContext

Todos los miembros static (Shared en Visual Basic) públicos 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 Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile para Smartphone, Windows Mobile para Pocket PC

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 3.5, 2.0, 1.0

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft