更新时间:2023-11-30 21:28:22
尝试如下操作:
public void WriteTrace(object sender, EventArgs e, string eventName)
{
Control c = (Control)sender;
Console.WriteLine("Control: " + f.Name + ", Event: " + eventName);
}
public void SubscribeEvent(Control control, string eventName) {
EventInfo eInfo = control.GetType().GetEvent(eventName);
if (eInfo != null) {
// create a dummy, using a closure to capture the eventName parameter
// this is to make use of the C# closure mechanism
EventHandler dummyDelegate = (s, e) => WriteTrace(s, e, eventName);
// Delegate.Method returns the MethodInfo for the delegated method
Delegate realDelegate = Delegate.CreateDelegate(eInfo.EventHandlerType, dummyDelegate.Target, dummyDelegate.Method);
eInfo.AddEventHandler(control, realDelegate);
}
}