共用方式為


Windows Form 資料繫結中的變更告知

Windows Forms 資料系結最重要的概念之一是 變更通知 。 若要確保您的資料來源和繫結控制項一律具有最新的資料,您必須新增資料系結的變更通知。 具體來說,您想要確保系結控制項會收到對其資料來源所做的變更通知,而且資料來源會收到控制項系結屬性變更的通知。

根據資料系結的類型而定,有不同類型的變更通知:

  • 簡單系結,其中單一控制項屬性會系結至物件的單一實例。

  • 清單型系結,可包含系結至清單中專案屬性的單一控制項屬性,或系結至物件清單的控制項屬性。

此外,如果您要建立要用於資料系結的 Windows Forms 控制項,則必須將 PropertyName 變更模式套用 至控制項,讓控制項系結屬性的變更傳播至資料來源。

簡單系結的變更通知

對於簡單的系結,當系結屬性的值變更時,商務物件必須提供變更通知。 您可以公開 商務物件之每個屬性的 PropertyName Changed 事件,並將商務物件系結至控制項的 BindingSource 或 慣用方法,讓商務物件 INotifyPropertyChanged 實作 介面,並在屬性值變更時引發 PropertyChanged 事件。 如需詳細資訊,請參閱 如何:實作 INotifyPropertyChanged 介面 。 當您使用實作 INotifyPropertyChanged 介面的物件時,您不需要使用 BindingSource 將 物件系結至 控制項,但建議使用 BindingSource

清單型系結的變更通知

Windows Forms 相依于系結清單,以提供屬性變更(清單專案屬性值變更)和清單變更(專案已刪除或新增至清單)資訊至系結控制項。 因此,用於資料系結的清單必須實 IBindingList 作 ,以提供這兩種類型的變更通知。 BindingList<T>是 的 IBindingList 泛型實作,其設計目的是要與 Windows Forms 資料系結搭配使用。 您可以建立 BindingList<T> ,其中包含實作 INotifyPropertyChanged 的商務物件類型,清單會自動將 PropertyChanged 事件轉換成事件 ListChanged 。 如果系結清單不是 IBindingList ,您必須使用 BindingSource 元件將物件清單系結至 Windows Forms 控制項。 元件 BindingSource 會提供類似于 的屬性 BindingList<T> 對清單轉換。 如需詳細資訊,請參閱 如何:使用 BindingSource 和 INotifyPropertyChanged 介面 引發變更通知。

自訂控制項的變更通知

最後,從控制項端,您必須針對設計為系結至資料的每個屬性公開 PropertyName Changed 事件。 然後,控制項屬性的變更會傳播至系結的資料來源。 如需詳細資訊,請參閱 如何:套用 PropertyNameChanged 模式

另請參閱