Да, это довольно раздражает, но есть простой обходной путь. Я создаю класс BindingListBase<T>
, который я использую для всех своих списков вместо обычного BindingList<T>
. Поскольку мой класс наследуется от BindingList<T>
, у меня есть доступ ко всем его защищенным членам, включая метод RemovedItem
.
Это позволяет мне забрать при удалении предмета. Вы можете сделать то, что я делаю, и иметь список mRemovedItems, в который я всегда добавляю элементы, или вызвать ваше собственное событие ItemRemoved.
См. Мой пример кода ниже:
Public MustInherit Class BindingListBase(Of T)
Inherits BindingList(Of T)
Protected mRemovedItems As New List(Of T)
Protected Overrides Sub ClearItems()
MyBase.ClearItems()
mRemovedItems.Clear()
End Sub
Protected Overrides Sub RemoveItem(ByVal index As Integer)
Dim item As T = MyBase.Item(index)
MyBase.RemoveItem(index)
mRemovedItems.Add(item)
End Sub
Public ReadOnly Property RemovedItems as List(Of T)
Get
Return mRemovedItems
End Get
End Property
End Class