Υπάρχει τρόπος να κάνεις αυτό που θες με events. Επειδή το CollectionBase δεν έχει events θα χρησιμοποιήσουμε ένα άλλο control. BindingSource. Αυτό έχει αυτά που χρειαζόμαστε. Θα το χρησιμοποιήσουμε ως εξής.
Dim withevents BS as new BindingSource
BS.Datasource=MyCollection
Μέχρι εδώ καλά. Αν τώρα περάσει ένα καινούριο object μέσα στο collection ή δiαγραφεί μπορούμε χρησιμοποιώντας το BindingSource να το πιάσουμε.
BS.Add(myObject)
Το πρόβλημα είναι όταν αλλάξει κάποιο Property. Εκεί θα πρέπει το Object να υλοποιήσει το INotifypropertyChange κάτι που όπως είπες δεν μπορείς να το κάνεις. Για να το ξεπεράσεις και αυτό θα κάνεις το εξής
Dim xObject as myObject
xObject=CType(BS.Current,myObject)
Μετά γράψε κώδικα στο Event του BindingSource CurrentItemChange ή ListChanged.
Οποιαδήποτε αλλαγή κάνεις στο myObject θα δεις ότι θα γίνονται fire τα παραπάνω events οπότε από εκεί μπορείς να πιάσεις αυτά που θες χωρίς να αλλάξεις τον κώδικα τον Objects που ήδη έχεις.
Αν σε προβλημάτισα λίγο διάβασε για το BindingSource control και αν έχεις κάποια απορία τα ξαναλέμε.