BindingContext Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee beheert u de verzameling BindingManagerBase objecten voor objecten die overnemen van de Control klasse.
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
- Overname
-
BindingContext
- Implementeringen
Voorbeelden
In het volgende codevoorbeeld worden vier Binding objecten gemaakt om vijf besturingselementen , een DateTimePicker en vier TextBox besturingselementen, te binden aan verschillende gegevensbronnen. Vervolgens BindingContext wordt deze gebruikt om de BindingManagerBase voor elke gegevensbron op te halen.
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
Opmerkingen
Elk Windows formulier heeft ten minste één BindingContext-object waarmee de BindingManagerBase-objecten voor het formulier worden beheerd. Omdat de BindingManagerBase klasse abstract is, is het retourtype van de Item[] eigenschap een CurrencyManager of een PropertyManager. Als de gegevensbron een object is dat slechts één eigenschap kan retourneren (in plaats van een lijst met objecten), is dit Type een PropertyManager. Als u bijvoorbeeld een TextBox als gegevensbron opgeeft, wordt er een PropertyManager geretourneerd. Als de gegevensbron daarentegen een object is dat wordt geïmplementeerd IList of IBindingList, wordt er een CurrencyManager geretourneerd.
Voor elke gegevensbron op een Windows formulier is er één CurrencyManager of PropertyManager. Omdat er mogelijk meerdere gegevensbronnen zijn gekoppeld aan een Windows Formulier, kunt u met de BindingContext een bepaalde CurrencyManager ophalen die aan een gegevensbron zijn gekoppeld.
Note
Wanneer u de Item[] eigenschap gebruikt, BindingContext wordt er een nieuwe BindingManagerBase gemaakt als deze nog niet bestaat. Dit kan tot verwarring leiden, omdat het geretourneerde object mogelijk niet de lijst (of een lijst) beheert die u van plan bent. Als u wilt voorkomen dat een ongeldige fout wordt BindingManagerBasegeretourneerd, gebruikt u de Contains methode om te bepalen of het beoogde BindingManagerBase al bestaat.
Als u een containerbesturingselement gebruikt, zoals een GroupBox, Panelof TabControl, om gegevensgebonden besturingselementen te bevatten, kunt u alleen voor dat containerbesturingselement en de bijbehorende besturingselementen een BindingContext containerbesturingselement maken. Vervolgens kan elk deel van uw formulier worden beheerd door een eigen BindingManagerBase. Zie de BindingContext constructor voor meer informatie over het maken van meerdere BindingManagerBase objecten voor dezelfde gegevensbron.
Als u een TextBox besturingselement toevoegt aan een formulier en dit koppelt aan een kolom van een tabel in een gegevensset, communiceert het besturingselement met het BindingContext formulier. De BindingContext, op zijn beurt, praat met de specifieke CurrencyManager voor die gegevenskoppeling. Als u een query hebt uitgevoerd op de Position eigenschap van het CurrencyManagerbesturingselement, zou het de huidige record rapporteren voor de binding van dat TextBox besturingselement. In het volgende codevoorbeeld is een TextBox besturingselement gebonden aan de FirstName kolom van een Customers tabel in de dataSet1 gegevensset via het BindingContext formulier waarop het besturingselement zich bevindt.
TextBox1.DataBindings.Add("Text", dataSet1, "Customers.FirstName")
textBox1.DataBindings.Add("Text", dataSet1, "Customers.FirstName");
U kunt een tweede TextBox besturingselement (TextBox2) toevoegen aan het formulier en dit binden aan de LastName kolom van de Customers tabel in dezelfde gegevensset. De BindingContext is op de hoogte van de eerste binding (TextBox1 aan Customers.FirstName), zodat deze hetzelfde CurrencyManagerzou gebruiken, omdat beide tekstvakken zijn gebonden aan dezelfde gegevensset (DataSet1).
TextBox2.DataBindings.Add("Text", dataSet1, "Customers.LastName")
textBox2.DataBindings.Add("Text", dataSet1, "Customers.LastName");
Als u verbinding maakt met TextBox2 een andere gegevensset, BindingContext wordt er een seconde CurrencyManagergemaakt en beheerd.
Het is belangrijk om consistent te zijn over de manier waarop u de DataSource en DisplayMember eigenschappen instelt. BindingContext Anders worden er meerdere valutabeheerders voor dezelfde gegevensset gemaakt, wat tot fouten leidt. In het volgende codevoorbeeld ziet u een aantal manieren om de eigenschappen en de bijbehorende BindingContext objecten in te stellen. U kunt de eigenschappen instellen met behulp van een van de volgende methoden, zolang u consistent bent in uw code.
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 meeste Windows Forms toepassingen binden via een BindingSource. Het BindingSource onderdeel bevat een CurrencyManager en maakt de CurrencyManager programmeerinterface beschikbaar. Wanneer u een BindingSource voor binding gebruikt, moet u de leden gebruiken die door de BindingSource leden worden weergegeven om 'valuta' (dat wil Positiongezegd) te manipuleren in plaats van door de BindingContext.
Constructors
| Name | Description |
|---|---|
| BindingContext() |
Initialiseert een nieuw exemplaar van de BindingContext klasse. |
Eigenschappen
| Name | Description |
|---|---|
| IsReadOnly |
Hiermee wordt een waarde opgehaald die aangeeft of de verzameling het kenmerk Alleen-lezen heeft. |
| Item[Object, String] |
Hiermee haalt u een BindingManagerBase op die is gekoppeld aan de opgegeven gegevensbron en het opgegeven gegevenslid. |
| Item[Object] |
Hiermee haalt u de BindingManagerBase gegevens op die is gekoppeld aan de opgegeven gegevensbron. |
Methoden
| Name | Description |
|---|---|
| Add(Object, BindingManagerBase) |
Voegt de BindingManagerBase gekoppelde aan een specifieke gegevensbron toe aan de verzameling. |
| AddCore(Object, BindingManagerBase) |
Voegt de BindingManagerBase gekoppelde aan een specifieke gegevensbron toe aan de verzameling. |
| Clear() |
Hiermee wist u de verzameling van objecten BindingManagerBase . |
| ClearCore() |
Hiermee wist u de verzameling. |
| Contains(Object, String) |
Hiermee wordt een waarde opgehaald die aangeeft of het BindingContext de BindingManagerBase gekoppelde gegevensbron en het gegevenslid bevat. |
| Contains(Object) |
Hiermee wordt een waarde opgehaald die aangeeft of het BindingContext de BindingManagerBase gekoppelde aan de opgegeven gegevensbron bevat. |
| Equals(Object) |
Bepaalt of het opgegeven object gelijk is aan het huidige object. (Overgenomen van Object) |
| GetHashCode() |
Fungeert als de standaardhashfunctie. (Overgenomen van Object) |
| GetType() |
Hiermee haalt u de Type huidige instantie op. (Overgenomen van Object) |
| MemberwiseClone() |
Hiermee maakt u een ondiepe kopie van de huidige Object. (Overgenomen van Object) |
| OnCollectionChanged(CollectionChangeEventArgs) |
Hiermee wordt de CollectionChanged gebeurtenis gegenereerd. |
| Remove(Object) |
Hiermee verwijdert u de BindingManagerBase gekoppelde aan de opgegeven gegevensbron. |
| RemoveCore(Object) |
Hiermee verwijdert u de BindingManagerBase gekoppelde aan de opgegeven gegevensbron. |
| ToString() |
Retourneert een tekenreeks die het huidige object vertegenwoordigt. (Overgenomen van Object) |
| UpdateBinding(BindingContext, Binding) |
Hiermee koppelt u een Binding aan een nieuwe BindingContext. |
gebeurtenis
| Name | Description |
|---|---|
| CollectionChanged |
Verhoogt altijd een NotImplementedException wanneer ze worden verwerkt. |
Expliciete interface-implementaties
| Name | Description |
|---|---|
| ICollection.CopyTo(Array, Int32) |
Kopieert de elementen van de verzameling naar een opgegeven matrix, te beginnen bij de verzamelingsindex. |
| ICollection.Count |
Hiermee wordt het totale aantal objecten opgehaald dat CurrencyManager wordt beheerd door de BindingContext. |
| ICollection.IsSynchronized |
Hiermee wordt een waarde opgehaald die aangeeft of de verzameling is gesynchroniseerd. |
| ICollection.SyncRoot |
Hiermee wordt een object opgehaald dat moet worden gebruikt voor synchronisatie (threadveiligheid). |
| IEnumerable.GetEnumerator() |
Hiermee haalt u een enumerator op voor de verzameling. |
Extensiemethoden
| Name | Description |
|---|---|
| AsParallel(IEnumerable) |
Hiermee schakelt u parallelle uitvoering van een query in. |
| AsQueryable(IEnumerable) |
Converteert een IEnumerable naar een IQueryable. |
| Cast<TResult>(IEnumerable) |
Cast de elementen van een IEnumerable naar het opgegeven type. |
| OfType<TResult>(IEnumerable) |
Hiermee filtert u de elementen van een IEnumerable op basis van een opgegeven type. |