次の方法で共有


BindingManagerBase クラス

同じデータ ソースおよび同じデータ メンバに結合された Binding オブジェクトをすべて管理します。このクラスは抽象クラスです。

この型のすべてのメンバの一覧については、BindingManagerBase メンバ を参照してください。

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

MustInherit Public Class BindingManagerBase
[C#]
public abstract class BindingManagerBase
[C++]
public __gc __abstract class BindingManagerBase
[JScript]
public abstract class BindingManagerBase

スレッドセーフ

この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。

解説

BindingManagerBase は、同じデータ ソースにバインドされた Windows フォームのデータ連結コントロールを同期できるようにします。コントロールをデータ ソースに単純連結するには、 DataBindings プロパティを通じてアクセスされる、コントロールの ControlBindingsCollection に、 Binding オブジェクトを追加します。たとえば、同じデータ ソースの異なる列 (顧客名が保持されている DataTable データ ソースの、名が格納された列および姓が格納された列) に結合された 2 つの TextBox コントロールがフォームに含まれているとします。同じ顧客に対して正しい姓と名を同時に表示するには、この 2 つのコントロールを同期させます。 BindingManagerBase クラスから継承された CurrencyManager が、リストの現在の項目へのポインタを維持することで、この同期を実行します。 TextBox コントロールは、現在の項目にバインドされているため、同じ行の情報を表示します。現在の項目が変更されると、 CurrencyManager が、すべての連結コントロールにデータを更新するように通知します。さらに、 Position プロパティを設定して、コントロールを指す DataTable の行を指定できます。リスト内の行の数を確認するには、 Count プロパティを使用します。

データ ソースが現在の項目のポインタを維持しているとは限らないため、 CurrencyManager が必要です。たとえば、配列と ArrayList オブジェクトはデータ ソースになる場合がありますが、現在の項目を返すプロパティは持っていません。現在の項目を取得するには、 Current プロパティを使用します。

PropertyManagerBindingManagerBase から継承され、リスト内の現在のオブジェクトのプロパティではなく、オブジェクトの現在のプロパティを維持するために使用されます。このため、 PropertyManager に対する Position プロパティまたは Count プロパティの設定は無効です。

BindingManagerBase オブジェクトを作成するには、 BindingContext クラスを使用します。この操作では、管理されているデータ ソースによって、 CurrencyManager または PropertyManager のいずれかが返されます。

継承時の注意: BindingManagerBase から継承する場合は、メンバである AddNewCountCancelCurrentEditCurrentEndCurrentEditGetItemPropertiesOnCurrentChangedPositionRemoveAtResumeBindingSuspendBinding 、および UpdateIsBinding をオーバーライドする必要があります。

使用例

[Visual Basic, C#, C++] BindingContext を使用して、特定のデータ ソースに対して BindingManagerBase オブジェクトを返す例を次に示します。この例では、モジュールの宣言セクションで myBindingManagerBase を宣言していることを前提にしています。さらに、この例では CurrentChanged イベントおよび PositionChanged イベントにイベント デリゲートを追加しています。最後に、この例には、 Position プロパティをインクリメントまたはデクリメントし、 Position をリストの最初または最後の行に設定する 4 つのメソッド (MoveNextMovePreviousMoveFirst 、および MoveLast) が含まれています。リストの最後の行は、 Count プロパティを使用して確認します。

 
Private Sub 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 DataSet.
   myBindingManagerBase = Me.BindingContext(DataSet1, _
   "Customers.CustomersToOrders")

   ' Adds delegates to the CurrentChanged and PositionChanged events.
   AddHandler myBindingManagerBase.PositionChanged, _
   AddressOf BindingManagerBase_PositionChanged
   AddHandler myBindingManagerBase.CurrentChanged, _
   AddressOf BindingManagerBase_CurrentChanged
End Sub

Private Sub BindingManagerBase_PositionChanged _
(sender As Object, e As EventArgs)

   ' Prints the new Position of the BindingManagerBase.
   Console.Write("Position Changed: ")
   Console.WriteLine(CType(sender, BindingManagerBase).Position)
End Sub

Private Sub BindingManagerBase_CurrentChanged _
(sender As Object, e As EventArgs)

   ' Prints the new value of the current object.
   Console.Write("Current Changed: ")
   Console.WriteLine(CType(sender, BindingManagerBase).Current)
End Sub

Private Sub MoveNext
   ' Increments the Position property value by one.
   myBindingManagerBase.Position += 1
End Sub

Private Sub MovePrevious
   ' Decrements the Position property value by one.
   myBindingManagerBase.Position -= 1
End Sub

Private Sub MoveFirst
   ' Goes to the first row in the list.
   myBindingManagerBase.Position = 0
End Sub

Private Sub MoveLast
   ' Goes to the last row in the list.
   myBindingManagerBase.Position = _
   myBindingManagerBase.Count - 1
End Sub

[C#] 
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;
}


[C++] 
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->get_Item(DataSet1, S"Customers.CustomersToOrders");

   // Adds delegates to the CurrentChanged and PositionChanged events.
   myBindingManagerBase->PositionChanged += 
   new EventHandler(this, &Form1::BindingManagerBase_PositionChanged);
   myBindingManagerBase->CurrentChanged +=
   new EventHandler(this, &Form1::BindingManagerBase_CurrentChanged);
}

void BindingManagerBase_PositionChanged
(Object* sender, EventArgs* /*e*/)
{
   // Prints the new Position of the BindingManagerBase.
   Console::Write(S"Position Changed: ");
   Console::WriteLine((dynamic_cast<BindingManagerBase*>(sender))->Position);
}

void BindingManagerBase_CurrentChanged
(Object* sender, EventArgs* /*e*/)
{
   // Prints the new value of the current object.
   Console::Write(S"Current Changed: ");
   Console::WriteLine((dynamic_cast<BindingManagerBase*>(sender))->Current);
}

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

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

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

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

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System.Windows.Forms

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET

アセンブリ: System.Windows.Forms (System.Windows.Forms.dll 内)

参照

BindingManagerBase メンバ | System.Windows.Forms 名前空間