I have a Windows Form project that I've just started. On the form I have a listbox that I'm loading with Products. When someone double clicks a Product, I want it to raise a ProductChanged event. Other things in my project will subscribe to this event and update things like other parts of the GUI when the Product changes.
My question is, where should the event be and who should raise it? Should the event be on the form and be raised by the listbox's double click handler? Or should I set it up where the event is in my Products class and the listbox calls a method on this class to let it know that the product has changed. And then the Product class will raise the event? Or should it be done another way?