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, beş denetimi (bir Binding ve dört denetim) çeşitli veri kaynaklarına bağlamak için dört DateTimePickerTextBox nesne oluşturur. BindingContext daha sonra her veri kaynağının değerini 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 Formun, form için BindingContext nesnelerini yöneten en az bir BindingManagerBase nesnesi vardır. BindingManagerBase sınıfı soyut olduğundan, özelliğinin Item[] dönüş türü veya CurrencyManager bir PropertyManager'dir. Veri kaynağı yalnızca tek bir özellik döndürebilen bir nesneyse (nesne listesi yerine), Type bir olur PropertyManager. Örneğin, veri kaynağı olarak bir TextBox belirtirseniz, bir PropertyManager döndürülür. Öte yandan, veri kaynağı veya IListuygulayan IBindingList bir nesneyse, bir CurrencyManager döndürülür.

bir Windows Formundaki her veri kaynağı için tek bir CurrencyManager veya PropertyManager vardır. Windows Form ile ilişkili birden çok veri kaynağı olabileceğinden, BindingContext veri kaynağıyla ilişkili belirli CurrencyManager almanızı sağlar.

Note

özelliği kullanılırken Item[] , BindingContext zaten 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 bazı karışıklıklara yol açabilir. Geçersiz BindingManagerBasebir döndürülmesini önlemek için yöntemini kullanarak Contains hedeflenenin BindingManagerBase zaten var olup olmadığını belirleyin.

Veriye bağlı denetimler içeren , GroupBoxveya Panelgibi bir TabControlkapsayıcı denetimi kullanıyorsanız, yalnızca bu kapsayıcı denetimi ve denetimleri için bir BindingContext oluşturabilirsiniz. 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 sütunuyla BindingContext iletişim kurar. buna BindingContextkarşılık , ilgili veri ilişkilendirmesi için belirli CurrencyManager bir ile konuşur. özelliğini PositionsorguladıysanızCurrencyManager, bu denetimin bağlaması TextBox için geçerli kaydı bildirir. Aşağıdaki kod örneğinde bir denetim, TextBox veri kümesindeki FirstNameCustomers bir dataSet1 tablonun sütununa, üzerinde olduğu formun aracılığıyla bağlıdırBindingContext.

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 - Customers.FirstName) farkında olduğundan, her iki metin kutusu da aynı CurrencyManagerveri kümesine (DataSet1 ) bağlı olduğu için aynı kullanır.

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 DataSource özelliklerini nasıl ayarladığınız DisplayMember 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.Customers
ComboBox1.DisplayMember = "FirstName"
Me.BindingContext(dataSet1.Customers).Position = 1
comboBox1.DataSource = DataSet1.Customers;
comboBox1.DisplayMember = "FirstName";
this.BindingContext[dataSet1.Customers].Position = 1;

Note

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

Oluşturucular

Name Description
BindingContext()

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

Özellikler

Name Description
IsReadOnly

Koleksiyonun salt okunur olup olmadığını belirten 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

Name Description
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, String)

öğesinin belirtilen veri kaynağı ve veri üyesiyle ilişkili öğesini içerip içermediğini BindingContextBindingManagerBase belirten bir değer alır.

Contains(Object)

öğesinin belirtilen veri kaynağıyla ilişkili öğesini BindingContext içerip içermediğini BindingManagerBase belirten 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()

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

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

Geçerli Objectbasit 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 bir dize döndürür.

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

yeni bir BindingBindingContextile ilişkilendirir.

Ekinlikler

Name Description
CollectionChanged

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

Belirtik Arabirim Kullanımları

Name Description
ICollection.CopyTo(Array, Int32)

Koleksiyon dizininden başlayarak, koleksiyonun öğelerini belirtilen bir diziye kopyalar.

ICollection.Count

tarafından CurrencyManageryönetilen nesnelerin toplam sayısını BindingContext 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ı

Name Description
AsParallel(IEnumerable)

Sorgunun paralelleştirilmesini etkinleştirir.

AsQueryable(IEnumerable)

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

Cast<TResult>(IEnumerable)

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

OfType<TResult>(IEnumerable)

Belirtilen türe göre bir IEnumerable öğesinin öğelerini filtreler.

Şunlara uygulanır

Ayrıca bkz.