BindingContext Osztály
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
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. |