0
我試圖將一個事件綁定到在自定義窗體類中創建的窗體元素。我對於如何綁定存在於類FormLoader(一個UserControl文件)上的方法非常無能。 例如:爲自定義窗體控件綁定EventHandler
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");
}
我得到「錯誤綁定到目標方法。」任何想法如何我可以綁定方法的事件存在超出範圍?
謝謝!不幸的是我仍然得到「錯誤綁定到目標方法」。 – xoail 2013-03-21 20:18:12
@xoail:抱歉,沒有注意到處理程序不在'o'對象上。你需要一個'FormLoader'的實例來構建委託。 – 2013-03-21 20:21:18
啊..明白了..謝謝! – xoail 2013-03-21 20:55:26