2011-02-17 80 views
0

我在asp.net這種方法克隆我的控制:複製事件要克隆Contorl

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事件)?

回答

0

您無法獲得使用反射訂閱事件的方法列表(AKA Invocation List)。您可以訂閱或取消訂閱,但無法獲取所有方法的列表。每個控件(或類型)都可以以不同的方式實現。

爲什麼不解釋爲什麼你想這樣做,有人可以建議另一種方式來做到這一點。

+0

我有一個按鈕,我想在兩個面板中顯示它。和我添加事件按鈕。有了這段代碼,我可以克隆它,但沒有事件 – Raika 2011-02-17 12:53:44