2

を使用して多数UserControlの を動的に作成してLoadControl(String)おり、それぞれのイベントをサブスクライブしたいと考えています。

Interfaceすべての私のコントロールは、 common の実装を必要とするcommon を継承しますEvent:

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!
}

このイベントに参加者を登録するにはどうすればよいですか?

4

2 に答える 2

5

Action<object, ObjectProcessedEventArgs>に変更EventHandler<ObjectProcessedEventArgs>:

private void LoadControl(string path, EventHandler<ObjectProcessedEventArgs> handler)
{
        var control = (IObjectProcessor)LoadControl(path)
        control.ObjectProcessed += handler;
}
于 2009-08-14T14:38:58.583 に答える
-1
control.ObjectProcessed += action
于 2009-08-14T14:40:15.477 に答える