创建与已声明的另一个控件相同类型的新控件

时间:2012-12-18 10:35:11

标签: asp.net vb.net winforms controls

我正在使用自定义模板类来生成具有我的转发器控件的行,我希望能够从我的aspx页面后面的代码中动态指定此转发器中的控件。 在后面的代码中,我将控件添加到这样的列表中:

Dim lstControls As New List(Of Control)
lstControls.Add(New TextBox)
lstControls.Add(New Label)
lstControls.Add(New CheckBox)
lstControls.Add(New DropDownList)
lstControls.Add(New CheckBox)

然后我用这一行将控件添加到我的模板

rptrSummary.ItemTemplate = New myTemplate(ListItemType.Item, , lstControls)

从instantiateIn sub我做这样的事情:

Dim ph As New PlaceHolder

For i = 0 To lstControls.Count - 1
    ph.Controls.Add(lstControls(i))
Next

这不能正常工作,并且在我的转发器控件的.databind()之后,我指定的控件只出现在最后一行。我想这是因为我只将控件声明为NEW一次,所以我只有一行值。

tldr?/结论:

如何从列表中生成与控件相同类型的新控件?类似的东西:

Dim newControl as new Control = type(lstControl(0))

(这显然不起作用)

1 个答案:

答案 0 :(得分:0)

我找到了答案,这里有一些例子,以防其他人被卡住(我也可能更改标题,因此它更可能与搜索标准相似):

dim egTextbox as new textbox
dim egLabel as new label

dim newObject1 as Object = Activator.CreateInstance(egTextbox.GetType)
dim newObject2 as Object = Activator.CreateInstance(egLabel.GetType)

newObject1现在是一个文本框 newObject2现在是一个标签