2011-01-27 68 views
1

我有一個簡單的UserControl,我創建,只是允許用戶輸入日期。目前,它有一個ID =「tbDate」的單個文本框。我試圖通過(例如)placeholder.Controls.Add(LoadControl())多次動態添加此控件,但接收到錯誤「已存在具有相同密鑰的條目」。也許我可以改變元素的ID,但是很難抓住用戶輸入的值。
有沒有人有這個想法?動態添加相同的UserControl多次

謝謝!

+0

你有沒有與這McArthey有任何進展?我只是遇到了類似的東西:( – Mordy 2011-05-06 14:40:24

回答

0

我生成一個唯一標識符作爲我創建的Component類的一部分,然後將該值用作Control.ID。您可以以任何方式生成此唯一值,但我將它作爲數據庫表的一部分進行存儲。最後它並不重要,因爲當類實例化時,值在應用程序的整個運行過程中被初始化並保持一致。

類有一個私有的實例變量:

private Control _control; 

當添加控件到窗體(和,特別是,佔位符),我做類似的東西了這一點。請注意,c引用我創建的類。

c.Control.ID = c.ComponentName + c.UniqueIdentifier; 
phHere.Controls.Add(c.Control); 

然後,當我需要在稍後的點來引用控制I基本上反向執行上述步驟:

string component = c.ComponentName + c.UniqueIdentifier; 
UserControl uc = (UserControl)ph.FindControl(component); 

希望這有助於。如果您有任何問題,請隨時詢問。但問題的根源在於必須設置Control.ID以避免錯誤。

謝謝

相關問題