Well, after giving myself a rather large headache over the last 2 days trying to work this out, i have come up with nothing. I just can't work this out, and I have to demo the software to the staff here tuesday next week! So here is what I'm having problems with as far as this goes: GetInvocationList looks like EXACTLY what I need, however i can't call it, as i dont have an event to call it on. Due to the fact that this is a serialiser, i'm going over every control on the form with code somewhat similar to this:
GetControls(_form, 0);
private void GetControls(object oControl, int parentId)
{
if (((Control)oControl).Controls.Count > 0)
{
foreach (Control childCtrl in ((Control)oControl).Controls)
{
// put basic details into the database, get a control id for it from the database
// get its properties
GetProperties("control", childCtrl, control\_id);
GetEvents("control", childCtrl, control\_id);
GetControls(childCtrl, control\_id);
}
}
}
GetEvents is defined:
private void GetEvents(string type, object oControl, int controlId)
Since this control could be any type of control i get the events on it:
Type t = oControl.GetType();
EventInfo[] events = t.GetEvents();
and then loop through them
foreach (EventInfo evnt in events)
{
}
Now I have an EventInfo for hte object. From this I can create a delegate if I'm so inclined (dlgt = Delegate.CreateDelegate(evnt.EventHandlerType, mi ); ) however, I get the problem of where does MemberInfo come from? I can't get it from the class that the control is in, because I don't know what this event needs to be bound to (moreover, this is what i'm actually trying to find out). I'd really love any ideas you have or if you could just point out where I'm going wrong (if the entire concept is not incorrect).