如何将实际控件存储在列表中?

时间:2010-10-19 14:40:42

标签: c# asp.net list dynamic

长话短说,我想采取动态加载的用户控件并将它们粘贴到引用已加载的实际对象的列表中。所以我可以进入列表并从usercontrol中提取结果。我想使用mycontrol.GetResult(),然后它将引用控件并从已填写的表单中获取结果,结果将作为字符串返回。我不希望它初始化相同类型的新控件,因为我将无法接收我的结果。有什么建议吗?

谢谢!

3 个答案:

答案 0 :(得分:4)

只需创建一个控件列表:

var controls = new List<Control>();

foreach(var control in Page.Controls)
{
    controls.Add(control);
}

然后,您可以根据需要使用该列表引用每个控件(这是一个简单的示例......填充列表的代码很可能会更复杂)。

答案 1 :(得分:0)

谁以编程方式添加控件?页面还是用户控件?该组件可以做到这一点。否则,另一个技巧是用户控件动态加载其他用户控件。您可以为页面提供一个接口定义,例如IDynamicControlHolder,它具有List类型,并在动态控件(或其他地方)中执行。

if (this.Page is IDynamicControlHolder)
   // change this to the appropriate reference
   ((IDynamicControlHolder)this.Page).DynamicControls.Add(this); 

答案 2 :(得分:0)

所以我已经创建了类似的代码并将控件加载到列表中但我不确定如何将表单中的结果放回到我的对象中。看到代码示例后,我意识到我已经这样做了,所以必须有更好的方法来获得我想要的东西。我操纵了一个现有方法,现在我用它将结果加载到我的对象中,当用户进入验证屏幕时。这很有效,谢谢你为我确认我做得对。