@ Доменик
Не слишком уверен, Никогда не зашел так далеко в мыслительном процессе.
Другое решение может заключаться в расширении ListView, и при добавлении и удалении вещи вместо вызова .items.add и items.remove вы вызываете ваши другие функции. Было бы все еще возможно добавить и удалить без событий, но с небольшим обзором кода, чтобы удостовериться, что .items.add и .items.remove не были вызваны непосредственно, это могло бы работать довольно хорошо Вот маленький пример. Я показал только 1 функцию добавления, но есть 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