BindingContext Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Hanterar samlingen med BindingManagerBase objekt för alla objekt som ärver från Control klassen.
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
- Arv
-
BindingContext
- Implementeringar
Exempel
I följande kodexempel skapas fyra Binding objekt för att binda fem kontroller – en DateTimePicker och fyra TextBox kontroller – till flera datakällor. BindingContext Används sedan för att hämta BindingManagerBase för varje datakälla.
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
Kommentarer
Varje Windows formulär har minst ett BindingContext objekt som hanterar BindingManagerBase objekt för formuläret. BindingManagerBase Eftersom klassen är abstrakt är returtypen för Item[] egenskapen antingen en CurrencyManager eller en PropertyManager. Om datakällan är ett objekt som bara kan returnera en enda egenskap (i stället för en lista med objekt) Type är det en PropertyManager. Om du till exempel anger en TextBox som datakälla returneras en PropertyManager . Å andra sidan, om datakällan är ett objekt som implementerar IList eller IBindingList, returneras en CurrencyManager .
För varje datakälla i ett Windows formulär finns det en enda CurrencyManager eller PropertyManager. Eftersom det kan finnas flera datakällor som är associerade med ett Windows formulär kan du med BindingContext hämta alla specifika CurrencyManager som är associerade med en datakälla.
Note
När du använder egenskapen Item[]BindingContext skapas en ny BindingManagerBase om den inte redan finns. Detta kan leda till viss förvirring eftersom det returnerade objektet kanske inte hanterar listan (eller någon lista) som du tänker använda. Om du vill förhindra att en ogiltig BindingManagerBasereturneras använder du Contains metoden för att avgöra om den avsedda BindingManagerBase redan finns.
Om du använder en containerkontroll, till exempel en GroupBox, Paneleller TabControl, för att innehålla databundna kontroller, kan du skapa en BindingContext för just den containerkontrollen och dess kontroller. Sedan kan varje del av formuläret hanteras av sin egen BindingManagerBase. Mer information om hur du skapar flera BindingManagerBase objekt för samma datakälla finns i BindingContext konstruktorn.
Om du lägger till en TextBox kontroll i ett formulär och binder den till en kolumn i en tabell i en datauppsättning kommunicerar kontrollen med formulärets BindingContext . , BindingContexti sin tur, pratar med det specifika CurrencyManager för den dataassociationen. Om du frågade Position egenskapen för CurrencyManagerskulle den rapportera den aktuella posten för bindningen av TextBox kontrollen. I följande kodexempel är en TextBox kontroll bunden till kolumnen i FirstName en Customers tabell på datauppsättningen dataSet1BindingContext via för formuläret som den är på.
TextBox1.DataBindings.Add("Text", dataSet1, "Customers.FirstName")
textBox1.DataBindings.Add("Text", dataSet1, "Customers.FirstName");
Du kan lägga till en andra TextBox kontroll (TextBox2) i formuläret och binda den LastName till kolumnen Customers i tabellen i samma datauppsättning. Är BindingContext medveten om den första bindningen (TextBox1 till Customers.FirstName), så den skulle använda samma CurrencyManager, eftersom båda textrutorna är bundna till samma datauppsättning (DataSet1).
TextBox2.DataBindings.Add("Text", dataSet1, "Customers.LastName")
textBox2.DataBindings.Add("Text", dataSet1, "Customers.LastName");
Om du binder TextBox2 till en annan datauppsättning skapar och hanterar den BindingContext en andra CurrencyManager.
Det är viktigt att vara konsekvent när det gäller hur du anger DataSource egenskaperna och DisplayMember . Annars BindingContext skapas flera valutahanterare för samma datauppsättning, vilket resulterar i fel. I följande kodexempel visas några sätt att ange egenskaperna och deras associerade BindingContext objekt. Du kan ange egenskaperna med någon av följande metoder, så länge du är konsekvent i koden.
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
De flesta Windows Forms program binder via en BindingSource. Komponenten BindingSource kapslar in en CurrencyManager och exponerar programmeringsgränssnittet CurrencyManager . När du använder en BindingSource för bindning bör du använda de medlemmar som exponeras av BindingSource för att manipulera "valuta" (dvs. Position) i stället för att gå igenom BindingContext.
Konstruktorer
| Name | Description |
|---|---|
| BindingContext() |
Initierar en ny instans av BindingContext klassen. |
Egenskaper
| Name | Description |
|---|---|
| IsReadOnly |
Hämtar ett värde som anger om samlingen är skrivskyddad. |
| Item[Object, String] |
Hämtar en BindingManagerBase som är associerad med den angivna datakällan och datamedlemmen. |
| Item[Object] |
Hämtar det BindingManagerBase som är associerat med den angivna datakällan. |
Metoder
| Name | Description |
|---|---|
| Add(Object, BindingManagerBase) |
Lägger till den BindingManagerBase associerade med en specifik datakälla i samlingen. |
| AddCore(Object, BindingManagerBase) |
Lägger till den BindingManagerBase associerade med en specifik datakälla i samlingen. |
| Clear() |
Rensar samlingen av alla BindingManagerBase objekt. |
| ClearCore() |
Rensar samlingen. |
| Contains(Object, String) |
Hämtar ett värde som anger om BindingContext innehåller den BindingManagerBase som är associerad med den angivna datakällan och datamedlemmen. |
| Contains(Object) |
Hämtar ett värde som anger om BindingContext innehåller den BindingManagerBase som är associerad med den angivna datakällan. |
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| OnCollectionChanged(CollectionChangeEventArgs) |
Genererar händelsen CollectionChanged . |
| Remove(Object) |
Tar bort den BindingManagerBase som är associerad med den angivna datakällan. |
| RemoveCore(Object) |
Tar bort den BindingManagerBase associerade med den angivna datakällan. |
| ToString() |
Returnerar en sträng som representerar det aktuella objektet. (Ärvd från Object) |
| UpdateBinding(BindingContext, Binding) |
Associerar en Binding med en ny BindingContext. |
Händelser
| Name | Description |
|---|---|
| CollectionChanged |
Höjer alltid en NotImplementedException när den hanteras. |
Explicita gränssnittsimplementeringar
| Name | Description |
|---|---|
| ICollection.CopyTo(Array, Int32) |
Kopierar elementen i samlingen till en angiven matris med början vid samlingsindexet. |
| ICollection.Count |
Hämtar det totala antalet CurrencyManager objekt som hanteras av BindingContext. |
| ICollection.IsSynchronized |
Hämtar ett värde som anger om samlingen synkroniseras. |
| ICollection.SyncRoot |
Hämtar ett objekt att använda för synkronisering (trådsäkerhet). |
| IEnumerable.GetEnumerator() |
Hämtar en uppräknare för samlingen. |
Tilläggsmetoder
| Name | Description |
|---|---|
| AsParallel(IEnumerable) |
Möjliggör parallellisering av en fråga. |
| AsQueryable(IEnumerable) |
Konverterar en IEnumerable till en IQueryable. |
| Cast<TResult>(IEnumerable) |
Omvandlar elementen i en IEnumerable till den angivna typen. |
| OfType<TResult>(IEnumerable) |
Filtrerar elementen i en IEnumerable baserat på en angiven typ. |