我有一个表单,我在其中添加带有[+]按钮的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] [+]
)
答案 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事件。