@Domenic
あまり確かではありませんが、思考過程の中でそれほど大したことはありません。
別の解決策は、あなたが他の関数を呼び出して、リストビューを拡張し、ものを追加および削除するときに、代わりに.items.add呼び出すのでは、とitems.removeするかもしれません。イベントを発生させずに追加と削除を行うことは可能ですが、.items.addと.items.removeが直接呼び出されていないことを確認するための少しのコードレビューで、かなりうまくいく可能性があります。ここに少しの例があります。私は1つのAdd関数しか示していませんでしたが、すべての利用可能なAdd関数を使いたい場合は、実装する必要があるのは6つです。 .AddRangeと.Clearもあります。
Public Class MonitoredListView
Inherits ListView
Public Event ItemAdded()
Public Event ItemRemoved()
Public Sub New()
MyBase.New()
End Sub
Public Function AddItem(ByVal Text As String) As ListViewItem
RaiseEvent ItemAdded()
MyBase.Items.Add(Text)
End Function
Public Sub RemoveItem(ByVal Item As ListViewItem)
RaiseEvent ItemRemoved()
MyBase.Items.Remove(Item)
End Sub
End Class
これまでの変更ではなく、変更を加えてイベントを発生させる方がよいと思います。あるいは、あなたは2つの出来事を持つことができます。前にはRaiseEvent ItemAdding();、後にはRaiseEvent ItemAdded();があります。 –