BindingContext Sınıf

Tanım

sınıfından BindingManagerBase devralan Control herhangi bir nesne için nesne koleksiyonunu yönetir.

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
Devralma
BindingContext
Uygulamalar

Örnekler

Aşağıdaki kod örneği, birkaç veri kaynağına beş denetim (bir DateTimePicker ve dört denetim) bağlamak için dört BindingTextBox nesne oluşturur. BindingContext Daha sonra her veri kaynağı için öğesini BindingManagerBase almak için kullanılır.

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

Açıklamalar

Her Windows Formunun, formun BindingManagerBase nesnelerini yöneten en az bir BindingContext nesnesi vardır. BindingManagerBase sınıfı soyut olduğundan, özelliğinin Item[] dönüş türü veya CurrencyManager şeklindedirPropertyManager. Veri kaynağı yalnızca tek bir özellik döndürebilen bir nesneyse (nesne listesi yerine), Type bir PropertyManagerolur. Örneğin, veri kaynağı olarak bir TextBox belirtirseniz, bir PropertyManager döndürülür. Öte yandan, veri kaynağı veya IBindingListuygulayan IList bir nesneyse, bir CurrencyManager döndürülür.

Bir Windows Formundaki her veri kaynağı için tek CurrencyManager bir veya PropertyManagervardır. Bir Windows Formu ile ilişkilendirilmiş birden çok veri kaynağı olabileceğinden, BindingContext veri kaynağıyla ilişkili belirli CurrencyManager herhangi bir veri kaynağını almanıza olanak tanır.

Not

özelliği kullanılırken Item[] , BindingContext henüz yoksa yeni BindingManagerBase bir tane oluşturur. Döndürülen nesne amaçladığınız listeyi (veya herhangi bir listeyi) yönetemeyebileceği için bu durum kafa karışıklığına neden olabilir. Geçersiz BindingManagerBasebir döndürülmesini önlemek için yöntemini kullanarak Contains amaçlananın BindingManagerBase zaten mevcut olup olmadığını belirleyin.

Veriye bağlı denetimler içermek için , veya TabControlgibi bir GroupBoxkapsayıcı denetimi kullanıyorsanız, yalnızca bu kapsayıcı denetimi ve denetimleri için bir BindingContext oluşturabilirsinizPanel. Ardından, formunuzun her bölümü kendi BindingManagerBasetarafından yönetilebilir. BindingContext Aynı veri kaynağı için birden çok BindingManagerBase nesne oluşturma hakkında daha fazla bilgi için oluşturucuya bakın.

Forma denetim TextBox ekleyip bir veri kümesindeki tablonun sütununa bağlarsanız, denetim bu formun ile BindingContext iletişim kurar. sırayla BindingContext, ilgili veri ilişkilendirmesi için belirli CurrencyManager bir ile konuşur. özelliğini CurrencyManagersorguladıysanızPosition, bu denetimin bağlaması TextBox için geçerli kaydı bildirir. Aşağıdaki kod örneğinde denetimTextBox, veri kümesindeki BindingContextFirstNamedataSet1 bir Customers tablonun sütununa, üzerinde olduğu formun üzerinden bağlıdır.

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

Forma ikinci TextBox bir denetim (TextBox2) ekleyebilir ve aynı LastName veri kümesindeki tablonun sütununa Customers bağlayabilirsiniz. BindingContext, ilk bağlamanın (TextBox1 için Customers.FirstName) farkında olduğundan, her iki metin kutusu da aynı CurrencyManagerveri kümesine (DataSet1 ) bağlı olduğundan aynı kullanır.

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

Farklı bir veri kümesine bağlanırsanız TextBox2 , BindingContext ikinci CurrencyManagerbir oluşturur ve yönetir.

ve DisplayMember özelliklerini nasıl ayarladığınız DataSource konusunda tutarlı olmak önemlidir; aksi takdirde, BindingContext aynı veri kümesi için birden çok para birimi yöneticisi oluşturur ve bu da hatalara neden olur. Aşağıdaki kod örneği, özellikleri ve ilişkili BindingContext nesnelerini ayarlamanın birkaç yolunu gösterir. Kodunuzun tamamında tutarlı olduğunuz sürece aşağıdaki yöntemlerden birini kullanarak özellikleri ayarlayabilirsiniz.

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;  
comboBox1->DisplayMember = "Customers.FirstName";  
this->BindingContext->get_Item(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;  
comboBox1->DataSource = dataSet1->Customers;  
comboBox1->DisplayMember = "FirstName";  
this->BindingContext->get_Item(dataSet1->Customers)->Position = 1;  

Not

Çoğu Windows Forms uygulaması aracılığıyla BindingSourcebağlanır. Bileşen BindingSource a CurrencyManager kapsüller ve programlama arabirimini CurrencyManager kullanıma sunar. bağlaması için kullanırkenBindingSource, üzerinden geçmek BindingContextyerine "para birimini" (başka bir ifadeylePosition) işlemek için tarafından kullanıma sunulan BindingSource üyeleri kullanmanız gerekir.

Oluşturucular

BindingContext()

BindingContext sınıfının yeni bir örneğini başlatır.

Özellikler

IsReadOnly

Topluluğun salt okunur olup olmadığını gösteren bir değer alır.

Item[Object, String]

Belirtilen veri kaynağı ve veri üyesiyle ilişkili bir BindingManagerBase alır.

Item[Object]

BindingManagerBase Belirtilen veri kaynağıyla ilişkili olan değerini alır.

Yöntemler

Add(Object, BindingManagerBase)

BindingManagerBase Belirli bir veri kaynağıyla ilişkili öğesini koleksiyona ekler.

AddCore(Object, BindingManagerBase)

BindingManagerBase Belirli bir veri kaynağıyla ilişkili öğesini koleksiyona ekler.

Clear()

Tüm BindingManagerBase nesnelerin koleksiyonunu temizler.

ClearCore()

Koleksiyonu temizler.

Contains(Object)

öğesinin belirtilen veri kaynağıyla ilişkili öğesini BindingManagerBase içerip içermediğini BindingContext belirten bir değer alır.

Contains(Object, String)

öğesinin belirtilen veri kaynağı ve veri üyesiyle ilişkili öğesinin bulunup bulunmadığına BindingContextBindingManagerBase ilişkin bir değer alır.

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
OnCollectionChanged(CollectionChangeEventArgs)

Olayı tetikler CollectionChanged .

Remove(Object)

BindingManagerBase Belirtilen veri kaynağıyla ilişkili öğesini siler.

RemoveCore(Object)

BindingManagerBase Belirtilen veri kaynağıyla ilişkili öğesini kaldırır.

ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)
UpdateBinding(BindingContext, Binding)

bir Binding öğesini yeni BindingContextbir ile ilişkilendirir.

Ekinlikler

CollectionChanged

İşlendiğinde her zaman bir NotImplementedException yükseltir.

Belirtik Arabirim Kullanımları

ICollection.CopyTo(Array, Int32)

Koleksiyonun öğelerini, koleksiyon dizininden başlayarak belirtilen bir diziye kopyalar.

ICollection.Count

tarafından BindingContextyönetilen nesnelerin toplam sayısını CurrencyManager alır.

ICollection.IsSynchronized

Koleksiyonun eşitlenip eşitlenmediğini belirten bir değer alır.

ICollection.SyncRoot

Eşitleme için kullanılacak nesneyi alır (iş parçacığı güvenliği).

IEnumerable.GetEnumerator()

Koleksiyon için bir numaralandırıcı alır.

Uzantı Metotları

Cast<TResult>(IEnumerable)

öğesinin IEnumerable öğelerini belirtilen türe atar.

OfType<TResult>(IEnumerable)

Bir öğesinin IEnumerable öğelerini belirtilen türe göre filtreler.

AsParallel(IEnumerable)

Sorgunun paralelleştirilmesini sağlar.

AsQueryable(IEnumerable)

bir IEnumerable öğesini öğesine IQueryabledönüştürür.

Şunlara uygulanır

Ayrıca bkz.