2012-04-25 38 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

使用其他控件序列化计数器,然后您可以加载退出控件并使用计数器值创建新控件。