2009-08-14 94 views
2

我使用LoadControl(String)動態地創建了UserControl個數,並且想要訂閱它們每個的事件。如何使用匿名方法動態訂閱事件?

我所有的控件繼承了需要的共同Event實現共同Interface

public interface IObjectProcessor 
{ 
    event EventHandler<ObjectProcessedEventArgs> ObjectProcessed; 
} 

所以我接下來做我的頁面加載事件:

protected void Page_Load() 
{ 
    switch(Request["type"]) 
    { 
    case "user": 
    { 
     LoadControl("AddUser.ascx", delegate(object sender, ObjectProcessedEventArgs e) 
     { 
      // do something 
     }); 
     break; 
    } 
    } 
} 

private void LoadControl(string path, Action<object, ObjectProcessedEventArgs> action) 
{ 
    var control = (IObjectProcessor)LoadControl(path) 
    control.ObjectProcessed // here! 
} 

如何訂閱一個deleagte到這個事件?

回答

5

變化Action<object, ObjectProcessedEventArgs>EventHandler<ObjectProcessedEventArgs>

private void LoadControl(string path, EventHandler<ObjectProcessedEventArgs> handler) 
{ 
     var control = (IObjectProcessor)LoadControl(path) 
     control.ObjectProcessed += handler; 
} 
-1
control.ObjectProcessed += action 
+0

無法隱式轉換型 '操作<對象,ObjectProcessedEventArgs>' 到 '事件處理程序' – abatishchev 2009-08-14 14:44:27

+0

創建委託的顯式declartion(對象發件人,ObjectProcessedEventArgs E)並將其用作輸入類型 – Dewfy 2009-08-14 14:52:23