在运行时从运行时创建的按钮创建TextBox:定义单击事件

时间:2012-09-26 12:12:42

标签: asp.net events

我有一个表单,我在其中添加带有[+]按钮的TextBox,第一个文本框和按钮是在运行时创建的,因此,定义按钮的Click事件的代码是(或应该是)类似的东西:

AddHandler button1.Click, AddressOf ButtonPlusClick

到目前为止没问题,但问题是:我需要 ButtonPlusClick()中的2个参数:面板ID,我要添加文本框,因为页面有一个非常的控件列表和创建的最后一个TextBox的序列号,以便不重复页面中的ID。

所以在这里我迷路了,所有我都在搜索关于代表的讨论,如:

Delegate Sub MySubDelegate(ByVal container As Panel, ByVal nseq As Integer)
Dim msd As MySubDelegate
msd = AddressOf ButtonPlusClick
msd.invoke(Panel1, 3)

但是,嘿,我现在不是在调用,而是定义了button1.Click事件必须调用 需要参数的功能,你可以帮我或指向一些文件?

(最终结果将是一个类似的列表,所有这些都是由类的代码创建的):

[TextBox] [+]
[TextBox] [+]
[TextBox] [+]

2 个答案:

答案 0 :(得分:1)

您可以使用Dictionary(Of String, Int32)。键是面板的ID,值是已创建的TextBoxes的计数。

然后您可以使用FindControl(panelID)获取对Panel的引用。您需要最迟从Page_Load中的计数重新创建TextBoxes。从连续数字中导出ID,例如“TextBox_1”,“TextBox_2”......“TextBox_10”,其中10是此面板字典中的Value

在事件处理程序中,您只需调用创建一个文本框的方法,并将1与字典值相加。

答案 1 :(得分:0)

您必须在Page_Init函数中从字典中返回相同的控件ID,否则将不会调用button_click事件。