将事件复制到克隆控件

时间:2011-02-17 12:43:56

标签: asp.net

我在asp.net中使用此方法来克隆我的控件:

public static Control Clone( Control ctrlSource )
{
    Type t = ctrlSource.GetType();
    Control ctrlDest = ( Control )t.InvokeMember( "" , BindingFlags.CreateInstance , null , null , null );
    foreach( PropertyInfo prop in t.GetProperties() )
    {
       if( prop.CanWrite )
       {
          if( prop.Name == "ID" )
          {
              ctrlDest.ID = ctrlSource.ID + "cloned" + Security.Cryptography.Cryptography.generateRandomPrivateKey( 5 );
          }
          else
          {
              prop.SetValue( ctrlDest , prop.GetValue( ctrlSource , null ) , null );
          }
       }
    }      
    return ctrlDest;

}

如何在目标控件中设置源控件事件(如Click事件)?

1 个答案:

答案 0 :(得分:0)

您无法获得使用反射订阅事件的方法列表(AKA Invocation List)。您可以订阅或取消订阅,但无法获取所有方法的列表。每个控件(或类型)都可以以不同的方式实现它。

为什么不解释为什么要这样做,有人可以提出另一种方法来做到这一点。