The solution of this problem in full is shown in the demo application which comes with my CodeProject article:
Dynamic Method Dispatcher[
^].
If you need to extract more information from the events, you can easily modify my code. It would be easy to do, because it is not written in such an ad-hoc style as yours. :-).
Cheers,
—SA