Вы можете создать делегат любого типа с помощью метода Delegate.CreateDelegate (...). Также создание анонимного метода, использующего InvokeMember для вызова метода «Узел», не является обязательным, если параметры вашего метода «Узел» совместимы по назначению с параметрами делегата и, следовательно, не требуется никакого специального преобразования параметров. Тогда вместо
TreeNodeMouseClickEventHandler myCode =(s,k)=>
{
tip.InvokeMember("Node",
BindingFlags.InvokeMethod | BindingFlags.Instance | BindingFlags.Public,
null,
obje,
new object[]{s,k});
};
просто создайте делегат для метода "Узел", того же типа, который ожидает событие:
MethodInfo NodeMethod = tip.GetMethod("Node", BindingFlags.Instance | BindingFlags.Public);
Delegate myCode = Delegate.CreateDelegate(evt.EventHandlerType, obje, NodeMethod);