gpt4 book ai didi

.net - dotnet : ListChangedType. ItemDeleted 没用?

转载 作者:行者123 更新时间:2023-12-04 16:57:21 28 4
gpt4 key购买 nike

IBindingList 的 ListChanged 事件在删除项目时触发类型 ListChangedType.ItemDeleted,可能是用户删除绑定(bind)​​到列表的数据网格控件中的一行。问题是这个事件中列表中的NewIndex无效,它已被删除,并且被删除的项目不可用。应该有一个 ItemDeleting 事件,但我怀疑他们会解决这个问题。

最佳答案

是的,这很烦人,但有一个简单的解决方法。我创建了一个 BindingListBase<T>我用于所有列表的类,而不是使用普通的 BindingList<T> .因为我的类继承自 BindingList<T> ,我可以访问它的所有 protected 成员,包括 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

关于.net - dotnet : ListChangedType. ItemDeleted 没用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/295091/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com