Bagikan melalui


BindingContext Kelas

Definisi

Mengelola kumpulan BindingManagerBase objek untuk objek apa pun yang mewarisi dari Control kelas .

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
Warisan
BindingContext
Penerapan

Contoh

Contoh kode berikut membuat empat Binding objek untuk mengikat lima kontrol - a DateTimePicker dan empat TextBox kontrol - ke beberapa sumber data. BindingContext kemudian digunakan untuk mendapatkan BindingManagerBase untuk setiap sumber data.

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

Keterangan

Setiap Formulir Windows memiliki setidaknya satu BindingContext objek yang mengelola BindingManagerBase objek untuk formulir. BindingManagerBase Karena kelasnya abstrak, jenis Item[] pengembalian properti adalah CurrencyManager atau PropertyManager. Jika sumber data adalah objek yang hanya dapat mengembalikan satu properti (bukan daftar objek), Type adalah PropertyManager. Misalnya, jika Anda menentukan TextBox sebagai sumber data, PropertyManager dikembalikan. Di sisi lain, jika sumber data adalah objek yang mengimplementasikan IList atau IBindingList, CurrencyManager dikembalikan.

Untuk setiap sumber data pada Formulir Windows, ada satu CurrencyManager atau PropertyManager. Karena mungkin ada beberapa sumber data yang terkait dengan Formulir Windows, BindingContext memungkinkan Anda untuk mengambil sumber data tertentu CurrencyManager yang terkait.

Catatan

Saat menggunakan Item[] properti , BindingContext membuat yang baru BindingManagerBase jika belum ada. Ini dapat menyebabkan beberapa kebingungan, karena objek yang dikembalikan mungkin tidak mengelola daftar (atau daftar apa pun) yang Anda inginkan. Untuk mencegah pengembalian yang tidak valid BindingManagerBase, gunakan Contains metode untuk menentukan apakah yang dimaksudkan BindingManagerBase sudah ada.

Jika Anda menggunakan kontrol kontainer, seperti GroupBox, , Panelatau TabControl, untuk berisi kontrol terikat data, Anda dapat membuat BindingContext hanya untuk kontrol kontainer tersebut dan kontrolnya. Kemudian, setiap bagian dari formulir Anda dapat dikelola dengan sendirinya BindingManagerBase. BindingContext Lihat konstruktor untuk informasi selengkapnya tentang membuat beberapa BindingManagerBase objek untuk sumber data yang sama.

Jika Anda menambahkan TextBox kontrol ke formulir dan mengikatnya ke kolom tabel dalam himpunan data, kontrol berkomunikasi dengan formulir tersebut BindingContext . , pada gilirannya BindingContext, berbicara dengan spesifik CurrencyManager untuk asosiasi data tersebut. Jika Anda mengkueri Position properti dari CurrencyManager, itu akan melaporkan rekaman saat ini untuk pengikatan kontrol tersebut TextBox . Dalam contoh kode berikut, TextBox kontrol terikat ke FirstName kolom tabel pada dataSet1 himpunan Customers data melalui BindingContext untuk formulir tempatnya aktif.

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

Anda dapat menambahkan kontrol kedua TextBox (TextBox2) ke formulir dan mengikatnya ke LastName kolom tabel dalam himpunan Customers data yang sama. BindingContext mengetahui pengikatan pertama (TextBox1 ke Customers.FirstName), sehingga akan menggunakan yang sama CurrencyManager, karena kedua kotak teks terikat ke himpunan data yang sama (DataSet1).

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

Jika Anda mengikat TextBox2 ke himpunan data yang berbeda, akan BindingContext membuat dan mengelola detik CurrencyManager.

Penting untuk konsisten tentang cara Anda mengatur DataSource properti dan DisplayMember ; jika tidak, BindingContext membuat beberapa manajer mata uang untuk himpunan data yang sama, yang menghasilkan kesalahan. Contoh kode berikut menunjukkan beberapa cara untuk mengatur properti dan objek terkait BindingContext . Anda dapat mengatur properti menggunakan salah satu metode berikut, selama Anda konsisten di seluruh kode Anda.

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;  

Catatan

Sebagian besar aplikasi Formulir Windows mengikat melalui BindingSource. Komponen BindingSource merangkum CurrencyManager dan mengekspos CurrencyManager antarmuka pemrograman. Saat menggunakan BindingSource untuk pengikatan, Anda harus menggunakan anggota yang diekspos oleh BindingSource untuk memanipulasi "mata uang" (yaitu, Position) daripada melalui BindingContext.

Konstruktor

BindingContext()

Menginisialisasi instans baru kelas BindingContext.

Properti

IsReadOnly

Mendapatkan nilai yang menunjukkan apakah koleksi bersifat baca-saja.

Item[Object, String]

BindingManagerBase Mendapatkan yang terkait dengan sumber data dan anggota data yang ditentukan.

Item[Object]

BindingManagerBase Mendapatkan yang terkait dengan sumber data yang ditentukan.

Metode

Add(Object, BindingManagerBase)

Menambahkan yang BindingManagerBase terkait dengan sumber data tertentu ke koleksi.

AddCore(Object, BindingManagerBase)

Menambahkan yang BindingManagerBase terkait dengan sumber data tertentu ke koleksi.

Clear()

Menghapus koleksi objek apa pun BindingManagerBase .

ClearCore()

Menghapus koleksi.

Contains(Object)

Mendapatkan nilai yang menunjukkan apakah BindingContext berisi yang BindingManagerBase terkait dengan sumber data yang ditentukan.

Contains(Object, String)

Mendapatkan nilai yang menunjukkan apakah BindingContext berisi BindingManagerBase yang terkait dengan sumber data dan anggota data yang ditentukan.

Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetType()

Mendapatkan dari instans Type saat ini.

(Diperoleh dari Object)
MemberwiseClone()

Membuat salinan dangkal dari saat ini Object.

(Diperoleh dari Object)
OnCollectionChanged(CollectionChangeEventArgs)

Memunculkan kejadian CollectionChanged.

Remove(Object)

Menghapus yang BindingManagerBase terkait dengan sumber data yang ditentukan.

RemoveCore(Object)

Menghapus yang BindingManagerBase terkait dengan sumber data yang ditentukan.

ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)
UpdateBinding(BindingContext, Binding)

Binding Mengaitkan dengan baruBindingContext.

Acara

CollectionChanged

Selalu menaikkan ketika ditangani NotImplementedException .

Implementasi Antarmuka Eksplisit

ICollection.CopyTo(Array, Int32)

Menyalin elemen koleksi ke dalam array tertentu, dimulai dari indeks koleksi.

ICollection.Count

Mendapatkan jumlah CurrencyManager total objek yang dikelola oleh BindingContext.

ICollection.IsSynchronized

Mendapatkan nilai yang menunjukkan apakah koleksi disinkronkan.

ICollection.SyncRoot

Mendapatkan objek yang akan digunakan untuk sinkronisasi (keamanan utas).

IEnumerable.GetEnumerator()

Mendapatkan enumerator untuk koleksi.

Metode Ekstensi

Cast<TResult>(IEnumerable)

Mentransmisikan elemen dari ke IEnumerable jenis yang ditentukan.

OfType<TResult>(IEnumerable)

Memfilter elemen berdasarkan IEnumerable jenis yang ditentukan.

AsParallel(IEnumerable)

Mengaktifkan paralelisasi kueri.

AsQueryable(IEnumerable)

Mengonversi menjadi IEnumerableIQueryable.

Berlaku untuk

Lihat juga