資料繫結透過反射讀取第一個元素決定欄位。集合為空時無法運作。解決:
ITypedList:GetListName、GetItemProperties 回傳型別描述資訊。
public class AddressList : CollectionBase
{
public string GetListName(PropertyDescriptor[] listAccessors) => "AddressList";
public PropertyDescriptorCollection GetItemProperties(PropertyDescriptor[] listAccessors)
=> TypeDescriptor.GetProperties(typeof(AddressRecord));
}
DataSet 讓使用者按 Esc 取消列編輯。自訂集合需自行實作 IEditableObject(BeginEdit/EndEdit/CancelEdit)。驗證透過 ColumnChanged 事件處理(如州別必須兩字母)。