Aracılığıyla paylaş


Veri Bağlama ile İlgili Arabirimler

ADO.NET ile uygulamanızın ve üzerinde çalıştığınız verilerin bağlama gereksinimlerine uygun birçok farklı veri yapısı oluşturabilirsiniz. Windows Forms'da veri sağlayan veya kullanan kendi sınıflarınızı oluşturmak isteyebilirsiniz. Bu nesneler, temel veri bağlamadan tasarım zamanı desteği, hata denetimi, değişiklik bildirimi ve hatta verilerde yapılan değişikliklerin yapılandırılmış geri alınması için destek sağlamaya kadar çeşitli işlevsellik ve karmaşıklık düzeyleri sunabilir.

Veri Bağlama Arabirimlerinin Tüketicileri

Aşağıdaki bölümlerde iki arabirim nesnesi grubu açıklanmaktadır. İlk grup, veri kaynağı yazarları tarafından veri kaynaklarına uygulanan arabirimleri listeler. Bu arabirimler, çoğu durumda Windows Forms denetimleri veya bileşenleri olan veri kaynağı tüketicileri tarafından kullanılmak üzere tasarlanmıştır. İkinci grup, bileşen yazarları tarafından kullanılmak üzere tasarlanmış arabirimleri listeler. Bileşen yazarları, Windows Forms veri bağlama altyapısı tarafından kullanılacak veri bağlamayı destekleyen bir bileşen oluştururken bu arabirimleri kullanır. Veri bağlamayı etkinleştirmek için formunuzla ilişkilendirilmiş sınıflar içinde bu arabirimleri uygulayabilirsiniz; her durum, verilerle etkileşime olanak tanıyan bir arabirim uygulayan bir sınıf sunar. Visual Studio hızlı uygulama geliştirme (RAD) veri tasarımı deneyimi araçları bu işlevden zaten yararlanır.

Veri Kaynağı Yazarları Tarafından Uygulamaya Yönelik Arabirimler

Aşağıdaki arabirimler Windows Forms denetimleri tarafından kullanılmak üzere tasarlanmıştır:

  • IList Arabirim

    Arabirimi uygulayan IList bir Arraysınıf , ArrayListveya CollectionBaseolabilir. Bunlar türündeki Objectöğelerin dizine alınan listeleridir. Dizinin ilk öğesi türü belirlediğinden, bu listeler homojen türler içermelidir. IList yalnızca çalışma zamanında bağlama için kullanılabilir.

    Dekont

    Windows Forms ile bağlama için iş nesnelerinin listesini oluşturmak istiyorsanız, kullanmayı BindingList<T>düşünmelisiniz. , BindingList<T> iki yönlü Windows Forms veri bağlaması için gereken birincil arabirimleri uygulayan genişletilebilir bir sınıftır.

  • IBindingList Arabirim

    arabirimini IBindingList uygulayan bir sınıf, çok daha yüksek düzeyde veri bağlama işlevi sağlar. Bu uygulama, hem liste öğelerinin ne zaman değiştiğinde (örneğin, bir müşteri listesindeki üçüncü öğenin Adres alanında bir değişikliği vardır) hem de listenin kendisi değiştiğinde (örneğin, listedeki öğelerin sayısı arttığında veya azaldığında) temel sıralama özellikleri ve değişiklik bildirimi sunar. Aynı verilere bağlı birden çok denetim olmasını planlıyorsanız ve denetimlerden birinde yapılan veri değişikliklerinin diğer ilişkili denetimlere yayılmasını istiyorsanız değişiklik bildirimi önemlidir.

    Dekont

    Değişiklik bildirimi, arabirimi için IBindingList özelliği aracılığıyla SupportsChangeNotification etkinleştirilir. Bu özellik, olduğunda true, listenin değiştiğini veya listedeki bir öğenin değiştiğini belirten bir olay tetikler ListChanged .

    Değişiklik türü parametresinin ListChangedTypeListChangedEventArgs özelliği tarafından açıklanmıştır. Bu nedenle, veri modeli her güncelleştirildiğinde, aynı veri kaynağına bağlı diğer denetimler gibi tüm bağımlı görünümler de güncelleştirilir. Ancak, listenin içinde yer alan nesnelerin, listenin olayı tetikleyebilmesi için ne zaman değiştiklerini listeye bildirmesi ListChanged gerekir.

    Dekont

    , BindingList<T> arabiriminin IBindingList genel bir uygulamasını sağlar.

  • IBindingListView Arabirim

    arabirimini IBindingListView uygulayan bir sınıf, uygulamasının IBindingListtüm işlevlerinin yanı sıra filtreleme ve gelişmiş sıralama işlevselliği sağlar. Bu uygulama, dize tabanlı filtreleme ve özellik tanımlayıcısı yön çiftleri ile çok sütunlu sıralama sunar.

  • IEditableObject Arabirim

    Arabirimini uygulayan bir sınıf, nesnede IEditableObject yapılan değişikliklerin ne zaman kalıcı hale getirildiğini denetlemesine olanak tanır. Bu uygulama, nesnede BeginEdityapılan değişiklikleri geri almanızı sağlayan , EndEditve CancelEdit yöntemlerini sağlar. Aşağıda, , EndEditve CancelEdit yöntemlerinin işleyişinin BeginEditve verilerde yapılan değişikliklerin olası bir geri alınmasına olanak tanımak için birbirleriyle nasıl çalıştıklarının kısa bir açıklaması yer almakta:

    • yöntemi, BeginEdit bir nesne üzerinde düzenlemenin başladığını gösterir. Bu arabirimi uygulayan bir nesnenin yöntem çağrısından sonra herhangi bir güncelleştirmeyi BeginEdit , yöntem çağrılırsa güncelleştirmelerin atılacağı şekilde depolaması CancelEdit gerekir. Windows Forms'u veri bağlamada, tek bir düzenleme işlemi kapsamında birden çok kez çağrı BeginEdit yapabilirsiniz (örneğin, BeginEdit, BeginEdit, EndEdit). uygulamaları IEditableObject önceden çağrılıp çağrılmadığını BeginEdit izlemeli ve sonraki çağrıları yoksaymalıdır BeginEdit. Bu yöntem birden çok kez çağrılabildiğinden, sonraki çağrıların yıkıcı olmaması önemlidir; diğer bir ifadeyle, sonraki BeginEdit çağrılar yapılan güncelleştirmeleri yok edemez veya ilk BeginEdit çağrıda kaydedilen verileri değiştiremez.

    • yöntemi EndEdit , nesne şu anda düzenleme modundaysa, temel alınan nesneye çağrıldığından bu yana BeginEdit yapılan tüm değişiklikleri iletir.

    • yöntemi, CancelEdit nesnede yapılan değişiklikleri atar.

    , EndEditve yöntemlerinin BeginEditnasıl çalıştığı hakkında daha fazla bilgi için bkz. Verileri veritabanına geri CancelEdit kaydetme.

    Veri işlevselliğinin bu işlemsel ifadesi denetim tarafından DataGridView kullanılır.

  • ICancelAddNew Arabirim

    Arabirimini uygulayan ICancelAddNew bir sınıf genellikle arabirimi uygular IBindingList ve yöntemiyle AddNew veri kaynağına yapılan bir eklemeyi geri almanızı sağlar. Veri kaynağınız arabirimi uyguluyorsa IBindingList , arabirimi de uygulaması ICancelAddNew gerekir.

  • IDataErrorInfo Arabirim

    Arabirimini IDataErrorInfo uygulayan bir sınıf, nesnelerin ilişkili denetimlere özel hata bilgileri sunmasına olanak tanır:

    • Error özelliği genel hata iletisi metni (örneğin, "Bir hata oluştu") döndürür.

    • Item[] özelliği, sütundan belirli bir hata iletisi içeren bir dize döndürür (örneğin, "Sütundaki State değer geçersiz").

  • IEnumerable Arabirim

    Arabirimi uygulayan IEnumerable bir sınıf genellikle ASP.NET tarafından kullanılır. Bu arabirim için Windows Forms desteği yalnızca bileşen aracılığıyla BindingSource kullanılabilir.

    Dekont

    Bileşen, BindingSource bağlama amacıyla tüm IEnumerable öğeleri ayrı bir listeye kopyalar.

  • ITypedList Arabirim

    Arabirimini uygulayan ITypedList bir koleksiyon sınıfı, ilişkili denetime sunulan sırayı ve özellik kümesini denetleme olanağı sağlar.

    Dekont

    yöntemini uyguladığınızda GetItemProperties ve PropertyDescriptor dizi null değilse, dizideki son girdi, başka bir öğe listesi olan list özelliğini açıklayan özellik tanımlayıcısı olur.

  • ICustomTypeDescriptor Arabirim

    Arabirimini uygulayan ICustomTypeDescriptor bir sınıf kendisi hakkında dinamik bilgiler sağlar. Bu arabirim, ITypedList listeler yerine nesneler için kullanılır. Bu arabirim, tarafından DataRowView temel alınan satırların şemasını yansıtmak için kullanılır. basit bir uygulaması ICustomTypeDescriptor sınıfı tarafından CustomTypeDescriptor sağlanır.

    Dekont

    uygulayan ICustomTypeDescriptortürlere tasarım zamanı bağlamasını desteklemek için türün form üzerinde bir örnek olarak da uygulanması IComponent ve mevcut olması gerekir.

  • IListSource Arabirim

    Arabirimini IListSource uygulayan bir sınıf, liste olmayan nesneler üzerinde liste tabanlı bağlamayı etkinleştirir. GetList yöntemiIListSource, öğesinden IListdevralmayan bir nesneden bağlanabilir liste döndürmek için kullanılır. IListSource sınıfı tarafından DataSet kullanılır.

  • IRaiseItemChangedEvents Arabirim

    Arabirimini uygulayan IRaiseItemChangedEvents bir sınıf, arabirimini de uygulayan IBindingList bağlanabilir bir listedir. Bu arabirim, türünüzün kendi özelliği aracılığıyla RaisesItemChangedEvents tür ItemChanged olaylarını tetiklediğini ListChanged belirtmek için kullanılır.

    Dekont

    Veri kaynağınız daha önce açıklanan olay dönüştürmesini listelemek için özelliğini sağlıyorsa ve bileşenle BindingSource etkileşimdeyse bunu uygulamanız IRaiseItemChangedEvents gerekir. Aksi takdirde, BindingSource daha yavaş performansa neden olan olay dönüştürmeyi listelemek için özelliği de gerçekleştirir.

  • ISupportInitialize Arabirim

    Arabirimi uygulayan ISupportInitialize bir bileşen, özellikleri ayarlamak ve ortak bağımlı özellikleri başlatmak için toplu iyileştirmelerden yararlanır. ISupportInitialize iki yöntem içerir:

    • BeginInit nesne başlatmanın başlatıldığını gösterir.

    • EndInit nesne başlatma işleminin tamamlandığını gösterir.

  • ISupportInitializeNotification Arabirim

    Arabirimi uygulayan ISupportInitializeNotification bir bileşen de arabirimi uygular ISupportInitialize . Bu arabirim, başlatmanın tamamlandığını diğer ISupportInitialize bileşenlere bildirmenizi sağlar. Arabirim ISupportInitializeNotification iki üye içerir:

    • IsInitialized , bileşenin başlatılıp başlatılmadığını belirten bir boolean değer döndürür.

    • Initialized çağrıldığında EndInit gerçekleşir.

  • INotifyPropertyChanged Arabirim

    Bu arabirimi uygulayan bir sınıf, özellik değerlerinden herhangi biri değiştiğinde bir olayı tetikleyen bir türdür. Bu arabirim, bir denetimin her özelliği için bir değişiklik olayına sahip olma deseninin yerini alacak şekilde tasarlanmıştır. içinde BindingList<T>kullanıldığında, bir iş nesnesi arabirimini INotifyPropertyChanged uygulamalıdır ve BindingList'1 olayları türünde ItemChangedolaylara ListChanged dönüştürürPropertyChanged.

    Dekont

    Değişiklik bildiriminin bağlı istemci ile veri kaynağı arasındaki bir bağlamada gerçekleşmesi için, bağlı veri kaynağı türünüzün arabirimini (tercih edilen) uygulaması INotifyPropertyChanged gerekir veya ilişkili tür için propertyNameChanged olayları sağlayabilirsiniz, ancak ikisini birden yapmamalısınız.

Bileşen Yazarları Tarafından Uygulamaya Yönelik Arabirimler

Aşağıdaki arabirimler Windows Forms veri bağlama altyapısı tarafından kullanılmak üzere tasarlanmıştır:

Ayrıca bkz.