2012-04-25 35 views
1

我正在創建一小段軟件,允許您在運行時添加控件。爲同一類的實例創建唯一的ID和計數器

我所做的是從控件創建一個派生類,其中包括一個靜態整數計數器,每次構建該類的實例時都會增加。這讓我創建了一個命名約定,所以名稱不會重複。例如我說

this.Name = "Label"+counter; 

問題出現在我想將其存儲在某種自定義序列化中。假設我創建了3個標籤:Label0,Label1,Label2然後,我刪除了Label1。這將導致Label0和Label2

如果我序列化當前狀態,然後加載該數據以重建狀態,則創建標籤將導致計數器值爲1,即最後一個標籤的名稱「Label2」 。這意味着如果現在我想要創建另一個標籤,將是「Label(counter + 1)」,即「Label2」,導致重複。

我的問題是,這是創建一個計數器的最佳方法,這個計數器的命名約定如此簡單,並且會跳過重複的名稱?

+0

您應該在序列化時保存ID ... – Servy 2012-04-25 14:12:43

+0

只有在沒有現有控件(或者等價地,當您加載序列化控件時銷燬所有現有控件)時纔會加載序列化控件嗎?否則,問題會更復雜一些,因爲您還必須處理現有控件的名稱與加載的控件之間的衝突。 – 2012-04-25 15:20:00

+0

try this.Name =「Label」+ GUID(),GUID是唯一的。 – Sandeep 2012-04-25 17:11:51

回答

1

使用其他控件序列化計數器,然後您可以加載退出控件並使用計數器值創建新控件。