class Item : Componentclass ItemCollection : List<Item>class ItemManager : UserControl
{
    public ItemCollection Items { get; private set; }
}1、当编译后把 ItemManager 拖动到窗体中;
2、在属性编辑器中给 Items 随便添加几个 Item(系统默认取名为 item1,item2...);
3、删除 ItemManager。好,现在问题来了,打开窗体的 Designer.cs,item1 和 item2 的代码部分还在 :-(
请教如何处理这样的问题,谢谢!

解决方案 »

  1.   

    但是 ListView 的道理和这个一样的,为什么它删掉的时候可以自动把 Column 全都删掉呢,头都大了
      

  2.   

    当然是还在的……因为item1 和 item2 是被当做不同的对像来处理的,只不过你的itemmanager 可以包含它们罢了。你使用可视化编程就是这个问题,你拖上去的,就会生成一个独立的控件,你可以用别的容器来包含它们,比如说你的 itemmanager ,但是这些拖上去的控件也是独立存在的,你必须自己去清除它们……
      

  3.   

    这个可能是自定义控件的问题。一般情况下,当你删除某种默认容器的时候,比如说PANEL,那么PANEL里面的控件也都没有了,那是因为,在可视化窗体里面,那些控件已经没有容身之地了,所以会被清除。控件与组件之分别就在于有没有UI,对于设计器来说,就是控件的话,会被清除,但是组件,你的 item 是 component的,它没有UI支持的情况下也可以存在。所以设计器无法根据在可视化设计器里面是否还有UI存在来判断是否清除对像的代码。如果你的 ITEM是继承自控件而非组件的话,相信就可以将代码全部清除了。
      

  4.   

    但是 ListView 为什么没有这个情况发生呢,ListView 的 Columns 就相当于现在这个问题
      

  5.   


    listview是控件,它的 listviewcolumn也是控件……控件不会出现你的问题,可是你的item是组件……我在7楼已经说明白了……
      

  6.   

    listviewcolumn 也是一个 Component,跟我的代码的 Item  是同一个类型。
      

  7.   

    搞定,重载 ItemManager 的 Dispose 方法,清理掉(Remove and Dispose) Items 里面的每一项即可我晕死了,突然灵感来了,想不到这么简单把我弄得要死