KimhillZhang  

如图:

实现效果:添加了多条数据到ListView列表里,在下面的文本框也对应添加“指令名称”,当我删除列表里的一要数据时(可能多条),在下面的文本框也对应删除对应的文本(文本框的显示顺序与列表不一致)。我想把删除列表的某条数据写成一个公共的方法,在方法删除时,对应的文本框文本也删除。所以想到的是用yield return.代码如下:

公共方法:

 public static System.Collections.IEnumerable DeleteListItem(this ListView lv)
        {
            int n = lv.SelectedItems.Count;
            if (n > 0)
            {
                ListView.SelectedListViewItemCollection sel_items = lv.SelectedItems;
                for (int i = 0; i < n; i++)
                {
                    ListViewItem sel_item = sel_items[0];
                    sel_item.Remove();
                    yield return sel_item;
                }
            }
        }

调用:

 private void toolDeleteDownNode_Click(object sender, EventArgs e)
        {
            System.Collections.IEnumerable ss = listView2.DeleteListItem();//调用

          
            foreach (ListViewItem i in ss)
            {
           
            }
        }

问题:为什么只有在执行

   foreach (ListViewItem i in ss)
            {
           
            }这里的时候才会去执行迭代的方法?请大家帮帮小弟解释解释。。。谢谢了。

posted on 2013-01-08 10:27  KimhillZhang  阅读(478)  评论(0编辑  收藏  举报