Hi,
You can use SelectionChange event to check what is selected.
About the OOP I dont know a good tutorial.
1 advantage of using objects that have multiple instances is: The code is only 1 time in memory, only the data is there multiple times. That is because the first argument of an object method is a pointer to the object data itself, so the code uses this pointer and offsets from it to have it's own data.
If you dont need multiple instances then choose from what you wants an separate object to have readable, understeandable code for happy maintenance later
Dont use cross references. Make an object as a "black box". You put something in it and it give you something back, for example in an event. Very easy for re-use in other projects then.