Este tema aún no ha recibido ninguna valoración - Valorar este tema

BindingManagerBase (Clase)

Actualización: noviembre 2007

Administra todos los objetos Binding enlazados al mismo origen y miembro de datos. Esta clase es abstracta.

Espacio de nombres:  System.Windows.Forms
Ensamblado:  System.Windows.Forms (en System.Windows.Forms.dll)
public abstract class BindingManagerBase
public abstract class BindingManagerBase
public abstract class BindingManagerBase

BindingManagerBase permite la sincronización de controles con enlace a datos de un formulario Windows Forms que estén enlazados al mismo origen de datos. (Para obtener más información sobre el enlace sencillo de un control con un origen de datos, vea la clase Binding.) Por ejemplo, imagine que un formulario contiene dos controles TextBox enlazados al mismo origen de datos pero a columnas diferentes. El origen de datos podría ser DataTable que contiene nombres de clientes, mientras que las columnas podrían contener nombres y apellidos. Los dos controles deben sincronizarse para mostrar juntos los nombres y apellidos correctos del mismo cliente. CurrencyManager, que hereda de la clase BindingManagerBase, realiza esta sincronización manteniendo un puntero que señale al elemento actual del origen de datos. Los controles TextBox están enlazados al elemento actual, por lo que muestran la información para la misma fila. Cuando el elemento actual cambia, CurrencyManager notifica a todos los controles enlazados para que puedan actualizar los datos. Además, es posible establecer la propiedad Position para especificar la fila del objeto DataTable al que señalan los controles. Para determinar cuántas filas existen en el origen de datos, utilice la propiedad Count.

CurrencyManager es necesario, ya que no siempre los orígenes de datos mantienen un puntero que señale al elemento actual. Por ejemplo, las matrices y los objetos ArrayList pueden ser orígenes de datos, pero no tienen una propiedad que devuelva el elemento actual. Para obtener el elemento actual, hay que utilizar la propiedad Current.

PropertyManager también hereda de BindingManagerBase y se utiliza para mantener la propiedad actual de un objeto, en lugar de la propiedad de un objeto actual de un origen de datos. Por este motivo, no se consigue nada al intentar establecer la propiedad Position o Count de PropertyManager.

Para crear un BindingManagerBase, hay que utilizar la clase BindingContext, que devuelve CurrencyManager o PropertyManager, dependiendo del origen de datos que se administre.

Los desarrolladores de soluciones deben enlazar los controles directamente a un componente BindingSource, que actúa como origen de datos y como conector de datos para el origen de datos de destino real. BindingSource simplifica considerablemente el enlace a datos simple y complejo, incluyendo la administración de monedas entre el control y su destino.

Notas para los herederos:

Al heredar de BindingManagerBase, hay que reemplazar los siguientes miembros abstractos: AddNew, Count, CancelCurrentEdit, Current, EndCurrentEdit, GetItemProperties, OnCurrentChanged, Position, RemoveAt, ResumeBinding, SuspendBinding y UpdateIsBinding.

En el ejemplo de código siguiente se utiliza BindingContext para devolver un BindingManagerBase para un origen de datos específico. En el ejemplo, se supone que se ha declarado myBindingManagerBase en la sección Declarations del módulo. A continuación, se agregan delegados de eventos a los eventos CurrentChanged y PositionChanged. Por último, en el ejemplo se incluyen cuatro métodos (MoveNext, MovePrevious, MoveFirst y MoveLast) que aumentan o disminuyen el valor de la propiedad Position, y establecen Position en la primera o última fila de la lista. La última fila de la lista se determina mediante la propiedad Count.

private void GetBindingManagerBase()
{
   /* CustomersToOrders is the RelationName of a DataRelation. 
   Therefore, the list maintained by the BindingManagerBase is the
   list of orders that belong to a specific customer in the 
   DataTable named Customers, found in DataSet1. */
   myBindingManagerBase = 
   this.BindingContext[DataSet1, "Customers.CustomersToOrders"];

   // Adds delegates to the CurrentChanged and PositionChanged events.
   myBindingManagerBase.PositionChanged += 
   new EventHandler(BindingManagerBase_PositionChanged);
   myBindingManagerBase.CurrentChanged +=
   new EventHandler(BindingManagerBase_CurrentChanged);
}

private void BindingManagerBase_PositionChanged
(object sender, EventArgs e)
{
   // Prints the new Position of the BindingManagerBase.
   Console.Write("Position Changed: ");
   Console.WriteLine(((BindingManagerBase)sender).Position);
}

private void BindingManagerBase_CurrentChanged
(object sender, EventArgs e)
{
   // Prints the new value of the current object.
   Console.Write("Current Changed: ");
   Console.WriteLine(((BindingManagerBase)sender).Current);
}

private void MoveNext()
{
   // Increments the Position property value by one.
   myBindingManagerBase.Position += 1;
}

private void MovePrevious()
{
   // Decrements the Position property value by one.
   myBindingManagerBase.Position -= 1;
}

private void MoveFirst()
{
   // Goes to the first row in the list.
   myBindingManagerBase.Position = 0;
}

private void MoveLast()
{
   // Goes to the last row in the list.
   myBindingManagerBase.Position = 
   myBindingManagerBase.Count - 1;
}



private void GetBindingManagerBase()
{
    /* CustomersToOrders is the RelationName of a DataRelation. 
       Therefore, the list maintained by the BindingManagerBase is the
       list of orders that belong to a specific customer in the 
       DataTable named Customers, found in dataSet1. 
     */
    myBindingManagerBase = this.get_BindingContext().get_Item(dataSet1, 
        "Customers.CustomersToOrders");

    // Adds delegates to the CurrentChanged and PositionChanged events.
    myBindingManagerBase.add_PositionChanged(new EventHandler
        (BindingManagerBase_PositionChanged));
    myBindingManagerBase.add_CurrentChanged(new EventHandler
        (BindingManagerBase_CurrentChanged));
} //GetBindingManagerBase

private void BindingManagerBase_PositionChanged(Object sender, EventArgs e)
{
    // Prints the new Position of the BindingManagerBase.
    Console.Write("Position Changed: ");
    Console.WriteLine(((BindingManagerBase)(sender)).get_Position());
} //BindingManagerBase_PositionChanged

private void BindingManagerBase_CurrentChanged(Object sender, EventArgs e)
{
    // Prints the new value of the current object.
    Console.Write("Current Changed: ");
    Console.WriteLine(((BindingManagerBase)(sender)).get_Current());
} //BindingManagerBase_CurrentChanged

private void MoveNext()
{
    // Increments the Position property value by one.
    myBindingManagerBase.set_Position(myBindingManagerBase.get_Position()
        + 1);
} //MoveNext

private void MovePrevious()
{
    // Decrements the Position property value by one.
    myBindingManagerBase.set_Position(myBindingManagerBase.get_Position()
        - 1);
} //MovePrevious

private void MoveFirst()
{
    // Goes to the first row in the list.
    myBindingManagerBase.set_Position(0);
} //MoveFirst

private void MoveLast()
{
    // Goes to the last row in the list.
    myBindingManagerBase.set_Position(myBindingManagerBase.get_Count() - 1);
} //MoveLast


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
¿Le ha resultado útil?
(Caracteres restantes: 1500)
Contenido de la comunidad Agregar