BindingContext Osztály

Definíció

Az osztálytól öröklő objektumok objektumgyűjteményét BindingManagerBaseControl kezeli.

public ref class BindingContext : System::Collections::ICollection
public class BindingContext : System.Collections.ICollection
type BindingContext = class
    interface ICollection
    interface IEnumerable
Public Class BindingContext
Implements ICollection
Öröklődés
BindingContext
Megvalósítás

Példák

Az alábbi példakód négy Binding objektumot hoz létre öt vezérlő – egy DateTimePicker és négy TextBox vezérlő – több adatforráshoz való kötéséhez. Ezután BindingContext az egyes adatforrások lekérésére BindingManagerBase szolgál.

void BindControls()
{
   /* Create two Binding objects for the first two TextBox 
         controls. The data-bound property for both controls 
         is the Text property. The data source is a DataSet 
         (ds). The data member is a navigation path in the form: 
         "TableName.ColumnName". */
   text1->DataBindings->Add( gcnew Binding( "Text",ds,"customers.custName" ) );
   text2->DataBindings->Add( gcnew Binding( "Text",ds,"customers.custID" ) );

   /* Bind the DateTimePicker control by adding a new Binding. 
         The data member of the DateTimePicker is a navigation path:
         TableName.RelationName.ColumnName string. */
   DateTimePicker1->DataBindings->Add( gcnew Binding( "Value",ds,"customers.CustToOrders.OrderDate" ) );

   /* Add event delegates for the Parse and Format events to a 
         new Binding object, and add the object to the third 
         TextBox control's BindingsCollection. The delegates 
         must be added before adding the Binding to the 
         collection; otherwise, no formatting occurs until 
         the Current object of the BindingManagerBase for 
         the data source changes. */
   Binding^ b = gcnew Binding( "Text",ds,"customers.custToOrders.OrderAmount" );
   b->Parse += gcnew ConvertEventHandler( this, &Form1::CurrencyStringToDecimal );
   b->Format += gcnew ConvertEventHandler( this, &Form1::DecimalToCurrencyString );
   text3->DataBindings->Add( b );

   // Get the BindingManagerBase for the Customers table. 
   bmCustomers = this->BindingContext[ ds,"Customers" ];

   /* Get the BindingManagerBase for the Orders table using the 
         RelationName. */
   bmOrders = this->BindingContext[ds, "customers.CustToOrders"];

   /* Bind the fourth TextBox control's Text property to the
      third control's Text property. */
   text4->DataBindings->Add( "Text", text3, "Text" );
}
protected void BindControls()
{
   /* Create two Binding objects for the first two TextBox 
      controls. The data-bound property for both controls 
      is the Text property. The data source is a DataSet 
      (ds). The data member is a navigation path in the form: 
      "TableName.ColumnName". */
   text1.DataBindings.Add(new Binding
   ("Text", ds, "customers.custName"));
   text2.DataBindings.Add(new Binding
   ("Text", ds, "customers.custID"));
   
   /* Bind the DateTimePicker control by adding a new Binding. 
      The data member of the DateTimePicker is a navigation path:
      TableName.RelationName.ColumnName string. */
   DateTimePicker1.DataBindings.Add(new 
   Binding("Value", ds, "customers.CustToOrders.OrderDate"));

   /* Add event delegates for the Parse and Format events to a 
      new Binding object, and add the object to the third 
      TextBox control's BindingsCollection. The delegates 
      must be added before adding the Binding to the 
      collection; otherwise, no formatting occurs until 
      the Current object of the BindingManagerBase for 
      the data source changes. */
      Binding b = new Binding
      ("Text", ds, "customers.custToOrders.OrderAmount");
   b.Parse+=new ConvertEventHandler(CurrencyStringToDecimal);
   b.Format+=new ConvertEventHandler(DecimalToCurrencyString);
   text3.DataBindings.Add(b);

   // Get the BindingManagerBase for the Customers table. 
   bmCustomers = this.BindingContext [ds, "Customers"];

   /* Get the BindingManagerBase for the Orders table using the 
      RelationName. */ 
   bmOrders = this.BindingContext[ds, "customers.CustToOrders"];

   /* Bind the fourth TextBox control's Text property to the
   third control's Text property. */
   text4.DataBindings.Add("Text", text3, "Text");
}
Protected Sub BindControls()

   ' Create two Binding objects for the first two TextBox 
   '   controls. The data-bound property for both controls 
   '   is the Text property. The data source is a DataSet 
   '   (ds). The data member is the string 
   '   "TableName.ColumnName".
   text1.DataBindings.Add(New Binding _
      ("Text", ds, "customers.custName"))
   text2.DataBindings.Add(New Binding _
      ("Text", ds, "customers.custID"))
   
   ' Bind the DateTimePicker control by adding a new Binding. 
   '   The data member of the DateTimePicker is a 
   '   TableName.RelationName.ColumnName string.
   DateTimePicker1.DataBindings.Add(New Binding _
      ("Value", ds, "customers.CustToOrders.OrderDate"))

   ' Add event delegates for the Parse and Format events to a 
   '   new Binding object, and add the object to the third 
   '   TextBox control's BindingsCollection. The delegates 
   '   must be added before adding the Binding to the 
   '   collection; otherwise, no formatting occurs until 
   '   the Current object of the BindingManagerBase for 
   '   the data source changes.
   Dim b As Binding = New Binding _
      ("Text", ds, "customers.custToOrders.OrderAmount")
   AddHandler b.Parse,  New ConvertEventHandler(AddressOf CurrencyStringToDecimal)      
   AddHandler b.Format, New ConvertEventHandler(AddressOf DecimalToCurrencyString)
   text3.DataBindings.Add(b)

   ' Get the BindingManagerBase for the Customers table.
   bmCustomers = Me.BindingContext(ds, "Customers")

   ' Get the BindingManagerBase for the Orders table using the 
   '   RelationName.
   bmOrders = Me.BindingContext(ds, "customers.CustToOrders")

   ' Bind the fourth TextBox control's Text property to the
   ' third control's Text property.
   text4.DataBindings.Add("Text", text3, "Text")

End Sub

Megjegyzések

Minden Windows űrlap rendelkezik legalább egy BindingContext objektummal, amely az űrlap BindingManagerBase objektumait kezeli. Mivel az BindingManagerBase osztály absztrakt, a tulajdonság visszatérési Item[] típusa egy CurrencyManager vagy egy PropertyManager. Ha az adatforrás olyan objektum, amely csak egyetlen tulajdonságot tud visszaadni (az objektumok listája helyett), akkor a TypePropertyManager. Ha például adatforrásként ad meg egy TextBox értéket, PropertyManager a függvény egy értéket ad vissza. Másrészt, ha az adatforrás egy olyan objektum, amely implementálja IList , vagy IBindingLista CurrencyManager visszaadott érték.

A Windows űrlap minden adatforrásához egyetlen CurrencyManager vagy PropertyManager tartozik. Mivel egy Windows űrlaphoz több adatforrás is társítható, a BindingContext lehetővé teszi az adatforráshoz társított CurrencyManager lekérését.

Note

A tulajdonság használatakor a Item[]BindingContext rendszer újat BindingManagerBase hoz létre, ha még nem létezik. Ez némi zavart okozhat, mivel előfordulhat, hogy a visszaadott objektum nem kezeli a kívánt listát (vagy listát). Az érvénytelen BindingManagerBasevisszatérés megakadályozása érdekében a Contains metódussal állapítsa meg, hogy a szándék BindingManagerBase már létezik-e.

Ha egy tárolóvezérlőt, például egy GroupBox, Panelvagy TabControlegy adatkötésű vezérlőt használ, létrehozhat egy olyan vezérlőt BindingContext , amely csak az adott tárolóvezérlőt és annak vezérlőit tartalmazza. Ezután az űrlap minden része saját BindingManagerBasekezeléssel kezelhető. További információt a BindingContext konstruktorban talál arról, hogyan hozhat létre több BindingManagerBase objektumot ugyanahhoz az adatforráshoz.

Ha vezérlőelemet TextBox ad hozzá egy űrlaphoz, és egy adathalmaz táblázatának oszlopához köti, a vezérlő kommunikál az BindingContext űrlappal. A BindingContextszóban forgó adattársítás konkrétumával CurrencyManager is beszél. Ha lekérdezte a Position tulajdonságot CurrencyManager, az a vezérlőelem kötésének aktuális rekordját TextBox jelenti. A következő kód példában egy TextBox vezérlőelem az adathalmaz egyik FirstName táblázatának Customers oszlopához van kötve dataSet1 a BindingContext rajta lévő űrlapon keresztül.

TextBox1.DataBindings.Add("Text", dataSet1, "Customers.FirstName")
textBox1.DataBindings.Add("Text", dataSet1, "Customers.FirstName");

Hozzáadhat egy második TextBox vezérlőelemet (TextBox2) az űrlaphoz, és a tábla oszlopához LastName kötheti Customers ugyanabban az adathalmazban. A BindingContext rendszer ismeri az első kötést (TextBox1 a következőhöz Customers.FirstName), ezért ugyanazt CurrencyManagerhasználná, mivel mindkét szövegmező ugyanahhoz az adatkészlethez (DataSet1) van kötve.

TextBox2.DataBindings.Add("Text", dataSet1, "Customers.LastName")
textBox2.DataBindings.Add("Text", dataSet1, "Customers.LastName");

Ha egy másik adatkészlethez kötődik TextBox2 , az BindingContext létrehoz és kezel egy másodpercet CurrencyManager.

Fontos, hogy konzisztens legyen az adatok és DataSource tulajdonságok DisplayMember beállításával kapcsolatban. Ellenkező esetben a BindingContext rendszer több pénznemkezelőt hoz létre ugyanahhoz az adatkészlethez, ami hibákat eredményez. Az alábbi példakód néhány módszert mutat be a tulajdonságok és a hozzájuk tartozó BindingContext objektumok beállítására. A tulajdonságokat az alábbi módszerek egyikével állíthatja be, amíg a kódban konzisztens.

ComboBox1.DataSource = DataSet1
ComboBox1.DisplayMember = "Customers.FirstName"
Me.BindingContext(dataSet1, "Customers").Position = 1
comboBox1.DataSource = DataSet1;
comboBox1.DisplayMember = "Customers.FirstName";
this.BindingContext[dataSet1, "Customers"].Position = 1;
ComboBox1.DataSource = DataSet1.Customers
ComboBox1.DisplayMember = "FirstName"
Me.BindingContext(dataSet1.Customers).Position = 1
comboBox1.DataSource = DataSet1.Customers;
comboBox1.DisplayMember = "FirstName";
this.BindingContext[dataSet1.Customers].Position = 1;

Note

A legtöbb Windows Forms alkalmazás egy BindingSource köt össze. Az BindingSource összetevő beágyaz egy CurrencyManager programozási felületet, és elérhetővé teszi a CurrencyManager programozási felületet. Ha kötést BindingSource használ, a "pénznem" (vagyis ) manipulálásához használja a BindingSource "pénznem" által közzétett tagokat ahelyett, Positionhogy végighalad a BindingContext.

Konstruktorok

Name Description
BindingContext()

Inicializálja a BindingContext osztály új példányát.

Tulajdonságok

Name Description
IsReadOnly

Beolvas egy értéket, amely jelzi, hogy a gyűjtemény írásvédett-e.

Item[Object, String]

BindingManagerBase Lekéri a megadott adatforráshoz és adattaghoz társított adatokat.

Item[Object]

Lekéri a BindingManagerBase megadott adatforráshoz társított adatokat.

Metódusok

Name Description
Add(Object, BindingManagerBase)

Hozzáadja a BindingManagerBase társított adatforrást a gyűjteményhez.

AddCore(Object, BindingManagerBase)

Hozzáadja a BindingManagerBase társított adatforrást a gyűjteményhez.

Clear()

Törli az objektumok gyűjteményét BindingManagerBase .

ClearCore()

Törli a gyűjteményt.

Contains(Object, String)

Beolvas egy értéket, amely jelzi, hogy az BindingContext tartalmazza-e a BindingManagerBase megadott adatforráshoz és adattaghoz társított értéket.

Contains(Object)

Beolvas egy értéket, amely jelzi, hogy a BindingContext megadott adatforráshoz társított értéket tartalmazza-e BindingManagerBase .

Equals(Object)

Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal.

(Öröklődés forrása Object)
GetHashCode()

Ez az alapértelmezett kivonatoló függvény.

(Öröklődés forrása Object)
GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
OnCollectionChanged(CollectionChangeEventArgs)

Az eseményt emeli CollectionChanged ki.

Remove(Object)

Törli a BindingManagerBase megadott adatforráshoz társítottat.

RemoveCore(Object)

Eltávolítja a BindingManagerBase megadott adatforráshoz társítottakat.

ToString()

Az aktuális objektumot jelképező sztringet ad vissza.

(Öröklődés forrása Object)
UpdateBinding(BindingContext, Binding)

Társít egy Binding újhoz BindingContext.

esemény

Name Description
CollectionChanged

Mindig emel, NotImplementedException ha kezeli.

Explicit interfész-implementációk

Name Description
ICollection.CopyTo(Array, Int32)

A gyűjtemény elemeit egy megadott tömbbe másolja a gyűjteményindextől kezdve.

ICollection.Count

Lekéri a CurrencyManagerBindingContext.

ICollection.IsSynchronized

Beolvas egy értéket, amely jelzi, hogy a gyűjtemény szinkronizálva van-e.

ICollection.SyncRoot

Lekéri a szinkronizáláshoz használni kívánt objektumot (szálbiztonság).

IEnumerable.GetEnumerator()

Lekéri a gyűjtemény enumerátorát.

Bővítő metódusok

Name Description
AsParallel(IEnumerable)

Lehetővé teszi a lekérdezés párhuzamosítását.

AsQueryable(IEnumerable)

Átalakítja az egyiket IEnumerableIQueryable.

Cast<TResult>(IEnumerable)

Egy elem elemeit IEnumerable a megadott típusra veti.

OfType<TResult>(IEnumerable)

Egy adott típus alapján szűri IEnumerable egy adott elem elemeit.

A következőre érvényes:

Lásd még