protected override void OnInit(EventArgs e)
{
base.OnInit(e);
var template = LoadControl(Path);
if (template == null)
throw new Exception("Could not located the Template");
var templateControl = template.FindControl("_placeHolder");
if (templateControl == null)
throw new Exception("Could not located the Place Holder");
templateControl.Controls.Add(_container);
//This doesnt Work
for (var i = 0; i < template.Controls.Count;i++ )
{
var myControl = template.Controls[i];
Controls.Add(myControl);
}
//This works
for (var i = 0; i < template.Controls.Count; i++)
{
var myControl = template.Controls[0];
template.Controls.Remove(myControl);
Controls.Add(myControl);
}
}
这只是我正在研究的教程。问题是为什么Second for循环显示页面上的输出而第一个不显示。我确实评论其中一个来测试这个。我到底错过了什么,为什么我需要删除控件?
答案 0 :(得分:0)
我从您的代码中看到的是
for (var i = 0; i < template.Controls.Count; i++)
{
var myControl = template.Controls[0];
template.Controls.Remove(myControl);
Controls.Add(myControl);
}
这个循环(第二个)实际上没有任何用处。 它每次只删除相同的控件,因为没有使用“i”。每次删除Controls [0],并将其重新添加到Controls。
希望它有所帮助。 如果它解决了你的问题,不要忘记投票。 谢谢.. :))