1 out of 1 rated this helpful - Rate this topic

BindingManagerBase Class

Manages all Binding objects that are bound to the same data source and data member. This class is abstract.

System.Object
  System.Windows.Forms.BindingManagerBase
    System.Windows.Forms.CurrencyManager
    System.Windows.Forms.PropertyManager

Namespace:  System.Windows.Forms
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)
public abstract class BindingManagerBase

The BindingManagerBase type exposes the following members.

  Name Description
Public method BindingManagerBase Initializes a new instance of the BindingManagerBase class.
Top
  Name Description
Public property Bindings Gets the collection of bindings being managed.
Public property Count When overridden in a derived class, gets the number of rows managed by the BindingManagerBase.
Public property Current When overridden in a derived class, gets the current object.
Public property IsBindingSuspended Gets a value indicating whether binding is suspended.
Public property Position When overridden in a derived class, gets or sets the position in the underlying list that controls bound to this data source point to.
Top
  Name Description
Public method AddNew When overridden in a derived class, adds a new item to the underlying list.
Public method CancelCurrentEdit When overridden in a derived class, cancels the current edit.
Public method EndCurrentEdit When overridden in a derived class, ends the current edit.
Public method Equals(Object) Determines whether the specified Object is equal to the current Object. (Inherited from Object.)
Protected method Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Public method GetHashCode Serves as a hash function for a particular type. (Inherited from Object.)
Public method GetItemProperties() When overridden in a derived class, gets the collection of property descriptors for the binding.
Protected method GetItemProperties(ArrayList, ArrayList) Gets the collection of property descriptors for the binding using the specified ArrayList.
Protected method GetItemProperties(Type, Int32, ArrayList, ArrayList) Gets the list of properties of the items managed by this BindingManagerBase.
Protected method GetListName When overridden in a derived class, gets the name of the list supplying the data for the binding.
Public method GetType Gets the Type of the current instance. (Inherited from Object.)
Protected method MemberwiseClone Creates a shallow copy of the current Object. (Inherited from Object.)
Protected method OnBindingComplete Raises the BindingComplete event.
Protected method OnCurrentChanged Raises the CurrentChanged event.
Protected method OnCurrentItemChanged Raises the CurrentItemChanged event.
Protected method OnDataError Raises the DataError event.
Protected method PullData Pulls data from the data-bound control into the data source, returning no information.
Protected method PushData Pushes data from the data source into the data-bound control, returning no information.
Public method RemoveAt When overridden in a derived class, deletes the row at the specified index from the underlying list.
Public method ResumeBinding When overridden in a derived class, resumes data binding.
Public method SuspendBinding When overridden in a derived class, suspends data binding.
Public method ToString Returns a string that represents the current object. (Inherited from Object.)
Protected method UpdateIsBinding When overridden in a derived class, updates the binding.
Top
  Name Description
Public event BindingComplete Occurs at the completion of a data-binding operation.
Public event CurrentChanged Occurs when the currently bound item changes.
Public event CurrentItemChanged Occurs when the state of the currently bound item changes.
Public event DataError Occurs when an Exception is silently handled by the BindingManagerBase.
Public event PositionChanged Occurs after the value of the Position property has changed.
Top
  Name Description
Protected field onCurrentChangedHandler Specifies the event handler for the CurrentChanged event.
Protected field onPositionChangedHandler Specifies the event handler for the PositionChanged event.
Top

The BindingManagerBase enables the synchronization of data-bound controls on a Windows Form that are bound to the same data source. (For more information about simple binding a control to a data source, see the Binding class.) For example, suppose that a form contains two TextBox controls that are bound to the same data source but to different columns. The data source might be a DataTable that contains customer names, while the columns might contain the first and last names. The two controls must be synchronized in order to display the correct first and last names together for the same customer. The CurrencyManager, which inherits from the BindingManagerBase class, accomplishes this synchronization by maintaining a pointer to the current item in the data source. The TextBox controls are bound to the current item so they display the information for the same row. When the current item changes, the CurrencyManager notifies all the bound controls so that they can refresh their data. Furthermore, you can set the Position property to specify the row in the DataTable that the controls point to. To determine how many rows exist in the data source, use the Count property.

The CurrencyManager is necessary because data sources do not necessarily maintain a current-item pointer. For instance, arrays and ArrayList objects can be data sources, but they do not have a property that returns the current item. To get the current item, use the Current property.

The PropertyManager also inherits from the BindingManagerBase, and it is used to maintain the current property of an object, rather than the property of a current object in a data source. For this reason, trying to set the Position or Count property for a PropertyManager has no effect.

To create a BindingManagerBase, use the BindingContext class, which returns either a CurrencyManager or a PropertyManager, depending on the data source being managed.

Solutions programmers are encouraged to bind controls directly to a BindingSource component, which acts as both a data source and data connector to the actual target data source. BindingSource greatly simplifies both simple and complex data binding, including managing currency between the control and its target.

Notes to Inheritors

When you inherit from BindingManagerBase, you must override the following abstract members: AddNew, Count, CancelCurrentEdit, Current, EndCurrentEdit, GetItemProperties, OnCurrentChanged, Position, RemoveAt, ResumeBinding, SuspendBinding, and UpdateIsBinding.

The following code example uses the BindingContext to return a BindingManagerBase for a specific data source. (The example assumes you have declared myBindingManagerBase in the Declarations section of the module.) The example then adds event delegates to the CurrentChanged and PositionChanged events. Lastly, the example contains four methods (MoveNext, MovePrevious, MoveFirst, and MoveLast) that increment or decrement the Position property, and set the Position to the first or last row in the list. The last row in the list is determined by using the Count property.


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;
}



.NET Framework

Supported in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Did you find this helpful?
(1500 characters remaining)
Community Content Add
Annotations FAQ