我有一个 asp.net 仪表板站点,允许用户从下拉列表中加载 HTML 模板。页面上有多种类型的 DevExpress 组件,包括 ASPxDockPanel。如果用户更改模板,我收到停靠面板已存在的错误,我想包含一个递归函数,如下面的函数,检查页面上是否存在任何 ASPxDockPanel,如果存在则删除它们。这仅适用于第一个停靠面板,然后轰炸。我认为这是因为在循环遍历一组可枚举控件时无法对其进行修改。如何在运行时循环控制并删除停靠面板?
protected void LoadTableTemplate(string selectedTemplate, int currentMode)
{
FindAllDockPanels(this);
}
public void FindAllDockPanels(Control ctrl)
{
if (ctrl != null)
{
foreach (Control control in ctrl.Controls)
{
if (control is ASPxDockPanel)
{
ctrl.Controls.Remove(control);
control.Dispose();
}
FindAllDockPanels(control);
}
}
}