CSDN博客

img runmin

关于collection的操作注意。

发表于2004/7/15 11:56:00  750人阅读

   写了个程序,用来从一个panel中将我自己写的user control移动到另外一个panel,如下

 

         private void MoveViewers(InfoList sourceList, InfoList targetList)

         {

              foreach (object viewer in sourceList.Controls)

              {

                   if (((InfoViewer) viewer).Checker.Checked)

                        targetList.Controls.Add((InfoViewer) viewer);

              }

         }

   

   谁知道,居然出错,郁闷,想了想,应该是Controls在变造成foreach找不到对象了。

   修改如下:

 

         private void MoveViewers(InfoList sourceList, InfoList targetList)

         {

              Queue queqe = new Queue();

 

              foreach (object viewer in sourceList.Controls)

              {

                   if (((InfoViewer) viewer).Checker.Checked)

                       queqe.Enqueue(viewer);

              }

 

              while (queqe.Count != 0)

              {

                   targetList.Controls.Add((InfoViewer) queqe.Dequeue());

              }

         }

 

   BUG修复,已经好用了。

 

   感叹,OOP一不小心,一个想当然的想法就会造成一个BUG,太恐怖了。

0 0

相关博文

我的热门文章

img
取 消
img