BindingContext Klasse

Definition

Verwaltet die Auflistung von BindingManagerBase Objekten für jedes Objekt, das von der Control Klasse erbt.

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
Vererbung
BindingContext
Implementiert

Beispiele

Im folgenden Codebeispiel werden vier Binding Objekte erstellt, um fünf Steuerelemente – ein DateTimePicker und vier TextBox Steuerelemente – an mehrere Datenquellen zu binden. Dies BindingContext wird dann verwendet, um die BindingManagerBase für jede Datenquelle abzurufen.

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

Hinweise

Jedes Windows Formular verfügt über mindestens ein BindingContext-Objekt, das die BindingManagerBase-Objekte für das Formular verwaltet. Da die BindingManagerBase Klasse abstrahiert ist, ist der Rückgabetyp der Item[] Eigenschaft entweder ein CurrencyManager oder ein PropertyManager. Wenn es sich bei der Datenquelle um ein Objekt handelt, das nur eine einzelne Eigenschaft (anstelle einer Liste von Objekten) zurückgeben kann, ist dies Type ein PropertyManager. Wenn Sie beispielsweise eine TextBox als Datenquelle angeben, wird eine PropertyManager zurückgegeben. Wenn es sich bei der Datenquelle um ein Objekt handelt, das implementiert IList oder IBindingList, wird eine CurrencyManager zurückgegeben.

Für jede Datenquelle in einem Windows Formular gibt es ein einzelnes CurrencyManager oder PropertyManager. Da einem Windows Formular möglicherweise mehrere Datenquellen zugeordnet sind, können Sie mit dem BindingContext beliebige bestimmte CurrencyManager abrufen, die einer Datenquelle zugeordnet sind.

Note

Wenn Sie die Item[] Eigenschaft verwenden, wird eine neue BindingManagerBase erstellt, wenn sie noch nicht vorhanden BindingContext ist. Dies kann zu Verwirrung führen, da das zurückgegebene Objekt möglicherweise die von Ihnen beabsichtigte Liste (oder eine beliebige Liste) nicht verwaltet. Um eine ungültige BindingManagerBaseRückgabe zu verhindern, verwenden Sie die Contains Methode, um zu ermitteln, ob die beabsichtigte BindingManagerBase bereits vorhanden ist.

Wenn Sie ein Containersteuerelement wie z. B. ein GroupBox, Paneloder TabControlein datengebundenes Steuerelement verwenden, können Sie ein BindingContext Steuerelement für dieses Containersteuerelement und dessen Steuerelemente erstellen. Anschließend kann jeder Teil Ihres Formulars von einem eigenen BindingManagerBaseverwaltet werden. Weitere Informationen zum Erstellen mehrerer BindingManagerBase Objekte für dieselbe Datenquelle finden Sie im BindingContext Konstruktor.

Wenn Sie einem Formular ein TextBox Steuerelement hinzufügen und an eine Spalte einer Tabelle in einem Dataset binden, kommuniziert das Steuerelement mit dem BindingContext Formular. Die BindingContextwiederum spricht mit dem Spezifischen CurrencyManager für diese Datenzuordnung. Wenn Sie die Position Eigenschaft des CurrencyManagerSteuerelements abgefragt haben, würde er den aktuellen Datensatz für die Bindung dieses TextBox Steuerelements melden. Im folgenden Codebeispiel wird ein TextBox Steuerelement über das BindingContext formular, auf dem dataSet1 es sich befindet, an die FirstName Spalte einer Customers Tabelle im Dataset gebunden.

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

Sie können dem Formular ein zweites TextBox Steuerelement (TextBox2) hinzufügen und an die LastName Spalte der Customers Tabelle im selben Dataset binden. Die BindingContext erste Bindung (TextBox1 an Customers.FirstName) ist bekannt, sodass sie dasselbe verwenden würde, da beide Textfelder an dasselbe CurrencyManagerDatasetDataSet1 () gebunden sind.

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

Wenn Sie eine Bindung an ein anderes Dataset erstellen TextBox2 und verwalten, BindingContext wird eine zweite CurrencyManagererstellt und verwaltet.

Es ist wichtig, konsistent zu sein, wie Sie die DataSource Eigenschaften DisplayMember festlegen. Andernfalls erstellt die BindingContext Gruppe mehrere Währungsmanager für dasselbe Dataset, was zu Fehlern führt. Das folgende Codebeispiel zeigt einige Möglichkeiten zum Festlegen der Eigenschaften und der zugehörigen BindingContext Objekte. Sie können die Eigenschaften mithilfe einer der folgenden Methoden festlegen, solange Sie im gesamten Code konsistent sind.

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

Die meisten Windows Forms Anwendungen binden durch eine BindingSource. Die BindingSource Komponente kapselt eine CurrencyManager Und macht die CurrencyManager Programmierschnittstelle verfügbar. Wenn Sie eine BindingSource Bindung verwenden, sollten Sie die Member verwenden, die durch die BindingSource Bearbeitung von "Währung" (d. h. ) verfügbar gemacht werden, Positionanstatt die BindingContext.

Konstruktoren

Name Beschreibung
BindingContext()

Initialisiert eine neue Instanz der BindingContext-Klasse.

Eigenschaften

Name Beschreibung
IsReadOnly

Ruft einen Wert ab, der angibt, ob die Auflistung schreibgeschützt ist.

Item[Object, String]

Ruft ein BindingManagerBase , das der angegebenen Datenquelle und dem angegebenen Datenmememm zugeordnet ist.

Item[Object]

Ruft ab, der BindingManagerBase der angegebenen Datenquelle zugeordnet ist.

Methoden

Name Beschreibung
Add(Object, BindingManagerBase)

Fügt der Auflistung die BindingManagerBase zugeordnete Datenquelle hinzu.

AddCore(Object, BindingManagerBase)

Fügt der Auflistung die BindingManagerBase zugeordnete Datenquelle hinzu.

Clear()

Löscht die Auflistung aller BindingManagerBase Objekte.

ClearCore()

Löscht die Auflistung.

Contains(Object, String)

Ruft einen Wert ab, der BindingManagerBase angibt, ob die BindingContext mit der angegebenen Datenquelle und dem angegebenen Datenmemm verknüpfte Enthält.

Contains(Object)

Ruft einen Wert ab, der angibt, ob die BindingContextBindingManagerBase der angegebenen Datenquelle zugeordnete Enthält.

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
OnCollectionChanged(CollectionChangeEventArgs)

Löst das CollectionChanged-Ereignis aus.

Remove(Object)

Löscht die BindingManagerBase zugeordnete Datenquelle.

RemoveCore(Object)

Entfernt die BindingManagerBase zugeordnete Datenquelle.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)
UpdateBinding(BindingContext, Binding)

Ordnet ein Binding neues BindingContext.

Ereignisse

Name Beschreibung
CollectionChanged

Löst immer einen NotImplementedException Zeitpunkt aus, wenn er behandelt wird.

Explizite Schnittstellenimplementierungen

Name Beschreibung
ICollection.CopyTo(Array, Int32)

Kopiert die Elemente der Auflistung in ein angegebenes Array, beginnend beim Auflistungsindex.

ICollection.Count

Ruft die Gesamtanzahl der CurrencyManager objekte ab, die von der BindingContext.

ICollection.IsSynchronized

Ruft einen Wert ab, der angibt, ob die Auflistung synchronisiert wird.

ICollection.SyncRoot

Ruft ein Objekt ab, das für die Synchronisierung verwendet werden soll (Threadsicherheit).

IEnumerable.GetEnumerator()

Ruft einen Enumerator für die Auflistung ab.

Erweiterungsmethoden

Name Beschreibung
AsParallel(IEnumerable)

Aktiviert die Parallelisierung einer Abfrage.

AsQueryable(IEnumerable)

Wandelt eine IEnumerable in eine IQueryableum.

Cast<TResult>(IEnumerable)

Wandelt die Elemente eines IEnumerable in den angegebenen Typ um.

OfType<TResult>(IEnumerable)

Filtert die Elemente einer IEnumerable basierend auf einem angegebenen Typ.

Gilt für:

Weitere Informationen