【发布时间】:2010-10-19 14:40:41
【问题描述】:
长话短说,我想将动态加载的用户控件粘贴到引用已加载的实际对象的列表中。所以我可以进入列表并从用户控件中提取结果。我想使用 mycontrol.GetResult() 然后它将引用控件并从已填写的表单中获取结果,结果将作为字符串返回。我不希望它初始化相同类型的新控件,因为那时我将无法接收我的结果。有什么建议吗?
谢谢!
【问题讨论】:
长话短说,我想将动态加载的用户控件粘贴到引用已加载的实际对象的列表中。所以我可以进入列表并从用户控件中提取结果。我想使用 mycontrol.GetResult() 然后它将引用控件并从已填写的表单中获取结果,结果将作为字符串返回。我不希望它初始化相同类型的新控件,因为那时我将无法接收我的结果。有什么建议吗?
谢谢!
【问题讨论】:
只需创建一个控件列表:
var controls = new List<Control>();
foreach(var control in Page.Controls)
{
controls.Add(control);
}
然后,您可以根据需要使用该列表来引用每个控件(这是一个简单的示例...您填充列表的代码很可能会更复杂)。
【讨论】:
谁以编程方式添加控件?页面还是用户控件?该组件可以做到。否则,另一个技巧是用户控件动态加载其他用户控件。您可以给页面一个接口定义,比如 IDynamicControlHolder,它具有 List 类型,并在动态控件(或其他地方)中执行。
if (this.Page is IDynamicControlHolder)
// change this to the appropriate reference
((IDynamicControlHolder)this.Page).DynamicControls.Add(this);
【讨论】:
所以我已经创建了类似的代码并将控件加载到列表中,但我不确定如何从放置回对象的表单中获取结果。在看到代码示例后,我意识到我已经在这样做了,所以必须有更好的方法来获得我想要的东西。我操纵了我现有的方法之一,现在我使用它在用户进入验证屏幕时将结果加载到我的对象中。这很好用,感谢您确认我做对了。
【讨论】: