ユーザーがドロップダウンリストから HTML テンプレートをロードできるようにする asp.net ダッシュボード サイトがあります。ページには、ASPxDockPanel を含む複数の種類の DevExpress コンポーネントがあります。ユーザーがテンプレートを変更すると、dockpanel が既に存在するというエラーが表示されます。次のような再帰関数を含めて、ページに ASPxDockPanels が存在するかどうかを確認し、存在する場合は削除します。これは、最初のドック パネルでのみ機能し、その後爆発します。これは、ループ中に列挙可能なコントロールのセットを変更できないためだと思います。コントロールをループして、実行時にドック パネルを削除するにはどうすればよいですか?
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);
}
}
}