当前位置:  开发笔记 > 编程语言 > 正文

dotnet:ListChangedType.ItemDeleted没用?

如何解决《dotnet:ListChangedType.ItemDeleted没用?》经验,为你挑选了1个好方法。

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



1> 小智..:

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

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有