private List<Control> GetMethodObject(string method)
{
List<Control> list = new List<Control>();
PropertyInfo pi = typeof(Component).GetProperty("Events", BindingFlags.NonPublic | BindingFlags.Instance);
foreach (FieldInfo fi in this.GetType().GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static))
{
if (fi.FieldType.IsSubclassOf(typeof(Control)))
{
Control ctl = fi.GetValue(this) as Control;
EventHandlerList ehl = pi.GetValue(ctl, null) as EventHandlerList;
object key = typeof(Control).GetField("EventClick", BindingFlags.NonPublic | BindingFlags.Static).GetValue(null);
Delegate del = ehl[key];
if (del != null)
{
foreach (Delegate de in del.GetInvocationList())
{
if (de.Method.Name == method)
list.Add(ctl);
}
}
}
}
return list;
}