次の方法で共有


BindingManagerBase クラス

定義

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

public ref class BindingManagerBase abstract
public abstract class BindingManagerBase
type BindingManagerBase = class
Public MustInherit Class BindingManagerBase
継承
BindingManagerBase
派生

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

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 += gcnew EventHandler( this, &Form1::BindingManagerBase_PositionChanged );
   myBindingManagerBase->CurrentChanged += gcnew EventHandler( this, &Form1::BindingManagerBase_CurrentChanged );
}

void BindingManagerBase_PositionChanged( Object^ sender, EventArgs^ /*e*/ )
{
   
   // Prints the new Position of the BindingManagerBase.
   Console::Write( "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( "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;
}
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 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

注釈

BindingManagerBaseでは、同じデータ ソースにバインドされている Windows フォーム上のデータ バインド コントロールの同期を有効にします。 (コントロールをデータ ソースに簡単にバインドする方法の詳細については、 クラスを Binding 参照してください)。たとえば、フォームに、同じデータ ソースにバインドされているが、異なる列にバインドされている 2 つの TextBox コントロールが含まれているとします。 データ ソースは、顧客名を含む である DataTable 場合があります。一方、列には姓と名が含まれる場合があります。 同じ顧客の正しい姓と名を一緒に表示するには、2 つのコントロールを同期する必要があります。 CurrencyManagerクラスをBindingManagerBase継承する は、データ ソース内の現在の項目へのポインターを維持することで、この同期を実現します。 コントロールは TextBox 現在の項目にバインドされるため、同じ行の情報が表示されます。 現在の項目が変更されると、 CurrencyManager はバインドされているすべてのコントロールに通知し、データを更新できるようにします。 さらに、 プロパティを Position 設定して、コントロールが指す 行 DataTable を指定できます。 データ ソースに存在する行の数を確認するには、 プロパティを Count 使用します。

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

PropertyManagerは からBindingManagerBase継承され、データ ソース内の現在のオブジェクトの プロパティではなく、オブジェクトの現在のプロパティを維持するために使用されます。 このため、 または Count プロパティPropertyManagerを に設定Positionしようとしても効果はありません。

BindingManagerBase作成するには、 クラスをBindingContext使用します。このクラスは、管理されているデータ ソースに応じて または を返CurrencyManagerPropertyManagerします。

ソリューション プログラマは、コントロールをコンポーネントに BindingSource 直接バインドすることをお勧めします。これは、データ ソースとデータ コネクタの両方として実際のターゲット データ ソースに機能します。 BindingSource では、コントロールとそのターゲットの間の通貨の管理など、単純なデータ バインディングと複雑なデータ バインディングの両方が大幅に簡素化されます。

注意 (実装者)

からBindingManagerBase継承する場合は、、、CancelCurrentEdit()OnCurrentChanged(EventArgs)SuspendBinding()ResumeBinding()EndCurrentEdit()CurrentCountGetItemProperties()PositionRemoveAt(Int32)および の抽象メンバーAddNew()をオーバーライドするUpdateIsBinding()必要があります。

コンストラクター

BindingManagerBase()

BindingManagerBase クラスの新しいインスタンスを初期化します。

フィールド

onCurrentChangedHandler

CurrentChanged イベントのイベント ハンドラーを指定します。

onPositionChangedHandler

PositionChanged イベントのイベント ハンドラーを指定します。

プロパティ

Bindings

管理されているバインディングのコレクションを取得します。

Count

派生クラスでオーバーライドされると、BindingManagerBase によって管理される行の数を取得します。

Current

派生クラスでオーバーライドされると、現在のオブジェクトを取得します。

IsBindingSuspended

バインディングが中断されているかどうかを示す値を取得します。

Position

派生クラスでオーバーライドされると、このデータ ソースにバインドされたコントロールが指す、基になるリストでの位置を取得または設定します。

メソッド

AddNew()

派生クラスでオーバーライドされると、基になるリストに新しい項目を追加します。

CancelCurrentEdit()

派生クラスでオーバーライドされると、現在の編集をキャンセルします。

EndCurrentEdit()

派生クラスでオーバーライドされると、現在の編集を終了します。

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetItemProperties()

派生クラスでオーバーライドされると、バインディングのプロパティ記述子のコレクションを取得します。

GetItemProperties(ArrayList, ArrayList)

指定した ArrayList を使用して、バインディングのプロパティ記述子のコレクションを取得します。

GetItemProperties(Type, Int32, ArrayList, ArrayList)

この BindingManagerBase によって管理されている項目のプロパティのリストを取得します。

GetListName(ArrayList)

派生クラスでオーバーライドされると、バインディングのためのデータを提供するリストの名前を取得します。

GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
OnBindingComplete(BindingCompleteEventArgs)

BindingComplete イベントを発生させます。

OnCurrentChanged(EventArgs)

CurrentChanged イベントを発生させます。

OnCurrentItemChanged(EventArgs)

CurrentItemChanged イベントを発生させます。

OnDataError(Exception)

DataError イベントを発生させます。

PullData()

データ バインド コントロールからデータ ソースにデータをプルします。情報は返しません。

PushData()

データ ソースからデータ バインド コントロールにデータをプッシュします。情報は返しません。

RemoveAt(Int32)

派生クラスでオーバーライドされると、基になるリストから指定されたインデックスに対応する行を削除します。

ResumeBinding()

派生クラスでオーバーライドされると、データ連結を再開します。

SuspendBinding()

派生クラスでオーバーライドされると、データ連結を中断します。

ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)
UpdateIsBinding()

派生クラスでオーバーライドされると、バインディングを更新します。

イベント

BindingComplete

データ バインディング操作の完了時に発生します。

CurrentChanged

現在バインドされている項目が変更されると発生します。

CurrentItemChanged

現在バインドされている項目の状態が変更されたときに発生します。

DataError

ExceptionBindingManagerBase によって処理された場合に発生します。

PositionChanged

Position プロパティの値が変更された後に発生します。

適用対象

こちらもご覧ください