A List<>
hanyalah larik yang mengubah ukuran secara otomatis, dari item dengan tipe tertentu, dengan beberapa fungsi pembantu (misalnya: sort). Ini hanya datanya, dan Anda cenderung menggunakannya untuk menjalankan operasi pada sekumpulan objek dalam model Anda.
A BindingList<>
adalah pembungkus di sekitar daftar atau koleksi yang diketik, yang mengimplementasikan IBindingList
antarmuka. Ini adalah salah satu antarmuka standar yang mendukung penyatuan data dua arah. Ia bekerja dengan mengimplementasikan ListChanged
acara, yang dimunculkan saat Anda menambahkan, menghapus, atau menyetel item. Kontrol terikat mendengarkan acara ini untuk mengetahui kapan harus menyegarkan tampilan mereka.
Saat Anda menyetel DataSource BindingSource ke a List<>
, itu secara internal membuat BindingList<>
untuk membungkus daftar Anda. Anda mungkin ingin membungkus daftar Anda dengan BindingList<>
diri Anda sendiri jika Anda ingin mengaksesnya di luar BindingSource, tetapi sebaliknya itu sama saja. Anda juga dapat mewarisi dari BindingList<>
untuk menerapkan perilaku khusus saat mengubah item.
IEditableObject
ditangani oleh BindingSource. Ini akan memanggil BeginEdit pada objek implementasi apa pun saat Anda mengubah data dalam kontrol terikat apa pun. Anda kemudian dapat memanggil EndEdit / CancelEdit di BindingSource dan itu akan meneruskannya ke objek Anda. Pindah ke baris lain akan memanggil EndEdit juga.
BindingList memungkinkan penyatuan data dua arah dengan menggunakan peristiwa, Daftar tidak mengaktifkan peristiwa saat koleksinya berubah.
Saya tidak berpikir itu akan memperbaiki masalah khusus Anda.
sumber