カスタムFormクラスで作成されたフォーム要素にイベントをバインドしようとしています。UserControlファイルであるFormLoaderクラスに存在するメソッドをバインドする方法についてはまったくわかりません。元:
public class FormBuilder
{
public Control Create(){
//create form controls here... for each control call AddEvent.
}
void AddEvent(object o, string eventname, string methodname)
{
EventInfo ei = o.GetType().GetEvent(eventname);
MethodInfo mi = typeof (FormLoader).GetMethod(methodname, BindingFlags.Public | BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Default);
Delegate del = Delegate.CreateDelegate(ei.EventHandlerType, typeof (FormLoader), mi);
ei.AddEventHandler(o, del);
}}
これが私のフォームをインスタンス化する方法です。
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
Form = new Form();
Controls.Add(Form.Create());
}
public void ProcessEventAction(object sender, EventArgs e)
{
System.Diagnostics.Debug.WriteLine(@"Control Internal Hit");
}
「ターゲットメソッドへのバインド中にエラーが発生しました」というメッセージが表示されます。スコープ外に存在するイベントのメソッドをバインドする方法はありますか?