oh, I just noticed that what you suggested for C# event handler registration isn't quite what we might expect to see. In C# to add an event handler it looks a lot like this:
revitApp.ControlledApplication.DocumentOpened += myDocOpenedHandler;
Note, there is no mention of arguments as they've already been agreed upon by the delegate type e.g. (object sender, DocuemntOpenedEventArgs [or something like that]) and the myDocOpenedHandler function definition just needs to adopt that set of parameters to be a "match"
revitApp.ControlledApplication.DocumentOpened += myDocOpenedHandler;
Note, there is no mention of arguments as they've already been agreed upon by the delegate type e.g. (object sender, DocuemntOpenedEventArgs [or something like that]) and the myDocOpenedHandler function definition just needs to adopt that set of parameters to be a "match"