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 プロパティを使用します。
PropertyManager も BindingManagerBase から継承され、リスト内の現在のオブジェクトのプロパティではなく、オブジェクトの現在のプロパティを維持するために使用されます。このため、 PropertyManager に対する Position プロパティまたは Count プロパティの設定は無効です。
BindingManagerBase オブジェクトを作成するには、 BindingContext クラスを使用します。この操作では、管理されているデータ ソースによって、 CurrencyManager または PropertyManager のいずれかが返されます。
継承時の注意: BindingManagerBase から継承する場合は、メンバである AddNew 、 Count 、 CancelCurrentEdit 、 Current 、 EndCurrentEdit 、 GetItemProperties 、 OnCurrentChanged 、 Position 、 RemoveAt 、 ResumeBinding 、 SuspendBinding 、および UpdateIsBinding をオーバーライドする必要があります。
使用例
[Visual Basic, C#, C++] BindingContext を使用して、特定のデータ ソースに対して BindingManagerBase オブジェクトを返す例を次に示します。この例では、モジュールの宣言セクションで myBindingManagerBase を宣言していることを前提にしています。さらに、この例では CurrentChanged イベントおよび PositionChanged イベントにイベント デリゲートを追加しています。最後に、この例には、 Position プロパティをインクリメントまたはデクリメントし、 Position をリストの最初または最後の行に設定する 4 つのメソッド (MoveNext 、 MovePrevious 、 MoveFirst 、および 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 内)