首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > CAD教程 >

stackpanel容器内有radgridview,chart等多个控件,怎么移除chart控件?小弟我写的代码错在哪

2012-08-29 
stackpanel容器内有radgridview,chart等多个控件,如何移除chart控件?我写的代码错在哪?C# codeforeach (va

stackpanel容器内有radgridview,chart等多个控件,如何移除chart控件?我写的代码错在哪?

C# code
foreach (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# code
List<UIElement> tobeRemove = new List<UIElement>();foreach (var item in ChartContainer.Children)                  {                      UIElement ui = item as UIElement;                      if (ui is Chart)                          tobeRemove.Add(ui);                  }//循环删除tobeRemove中的控件 

热点排行