Grazie a entrambi, sono riuscito a risolvere il problema con l'uso della delegate

Grazie anche del tuo codice zero85, così in effetti come metodo è molto più versatile

edit: solo una cosa non capisco
Perchè nell'ultimo if il valore viene impostato a NULL?

p.SetValue(oControl,propValue,null);