BindingContext Klas

Definitie

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.

Van toepassing op

Zie ook