stackpanel容器内有radgridview,chart等多个控件,怎么移除chart控件?小弟我写的代码错在哪
stackpanel容器内有radgridview,chart等多个控件,如何移除chart控件?我写的代码错在哪?C# codeforeach (va
stackpanel容器内有radgridview,chart等多个控件,如何移除chart控件?我写的代码错在哪?
C# codeforeach (var item in ChartContainer.Children) { UIElement ui = item as UIElement; if (ui is Chart) ChartContainer.Children.Remove(ui); }
ChartContainer.Children.Remove(ui); 这句话执行没错,可是执行完后跳到
foreach (var item in ChartContainer.Children)这句话就提示“对象的当前状态使该操作无效”
[解决办法]这样做不对。
你删除一个元素后,就再次循环就会出错。原因是你已经更改了原来的集合。
用for循环。
for(int i=ChartContainer.Children.Count-1;i>=0;i--)
{
UIElement ui = ChartContainer.Children[i] as UIElement;
if (ui is Chart)
ChartContainer.Children.Remove(ui);
}
[解决办法] ChartContainer.Children你这明显是个集合,比如里面曾经有5个UI你删掉一个就变成了4个,这时候你还要继续循环,这个集合自己都不知道怎么去循环了
[解决办法]C# codeList<UIElement> tobeRemove = new List<UIElement>();foreach (var item in ChartContainer.Children) { UIElement ui = item as UIElement; if (ui is Chart) tobeRemove.Add(ui); }//循环删除tobeRemove中的控件