在运行时添加时指定唯一的控件名称(如VS IDE)

时间:2010-04-14 10:37:19

标签: .net vb.net

我有一个用于我正在构建的用户控件的基本IDE。它允许我向面板添加标签并移动它们,就像一个非常基本的表单设计器。

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您可以创建一个快速而脏的ASP.NET页面,在其上转储一堆控件,运行它并研究自动生成的ClientID。 ASP.NET(至少< v4)执行此操作的方式是命名该名称,然后在末尾添加一个数字。命名空间包含父(容器)控件的名称/命名空间的一部分。

因此,在您的情况下,如果新放置的Button被放入已存在于页面上的div中的div中,则自动生成的名称将为:

div1_div1_button[x]

[x]将是您生成的号码。生成这个的简单方法是获取父容器中已有的子控件的数量并将其递增1.没有对托管页面的引用,因为命名空间是相对于页面的。 ASP.NET在呈现之前重新评估服务器控件的自动生成名称,这样就不可能在同一页面内发生名称冲突(如果两个相同的控件结构位于同一父级中,则其中一个这些控件将1附加到其自动生成的名称,另一个将附加2,因此不会发生冲突。

希望这有助于:)