2010-04-14 30 views
1

我有一个基本的IDE用于我正在构建的用户控件。它允许我将标签添加到面板并移动它们,就像非常基本的表单设计器一样。在运行时添加时指定唯一的控件名称(如VS IDE)

当我在运行时将控件添加到面板时,我想给控件一个唯一的名称字符串,例如VS IDE如何跟踪它已有的控件,并在创建默认控件名称时添加一个额外的数字。每次添加新控件时,我都尝试检查控件集合,但不确定是否有一个很好的字符串比较方法返回名称,并在尚未使用的末尾返回一个唯一编号。

回答

0

最简单的方法是维护排序数组中的名称列表,以便您可以选择最后一个名称并根据它创建一个新名称。

0

你可以创建一个快速和脏的ASP.NET页面,转储一堆控件,运行它并研究自动生成的ClientID。 ASP.NET(至少< v4)的方式是命名空间名称,然后在最后添加一个数字。命名空间合并了父(容器)控件的部分名称/命名空间。

所以你的情况,如果新放置的按钮在一个DIV它已经在其页面上托管一个div下降,产生的自身名称为:

div1_div1_button[x] 

[x]会是你生成的号码。一种简单的生成方法是获取父容器中已经存在的子控件的数量并将其增加1。由于命名空间相对于页面,因此没有对托管页面的引用。 ASP.NET在渲染之前重新评估自动生成的服务器控件的名称,这样就不可能在同一页面中获得名称冲突(如果2个相同的控件结构位于同一父级中,则那些控件将得到1附加到它的自动生成名称,另一个将附加2,所以没有碰撞)。

希望这有助于:)

+0

感谢球员,我最后使用排序的数组方法,完美的作品。 – 2010-09-07 09:47:27

相关问题