winform程序中对象绑定自动删除的现象
今天编写一个winform的页面,遇到一个很纠结的问题,页面样式如下:
左边是一个一览,绑定一个对象数据源;右边是对应的子列表,绑定的是左边树形结构节点的子列表对象数据源
问题描述:我左边的树形结构选择改变的时候,再选择回来后发现子列表为空白了,跟踪测试发现,当我当前选择项改变时,子列表里面的数据被清空
这个问题让我头疼了一个下午,最终我发现问题出在datasource.clear()这个问题上,也就是当前的子对象还在当前需要保存的对象集合中,而我用了clear()方法,就是将子数据全部标注了delete()标记;要慎用
注:我之前也经常在数据源变更的时候使用datasource.clear()的方法,但是如果当前这个对象还在被保存的父级对象之内,那么就不能用这个方法。当然如果当前的父级对象被改变了,那么还是可以用clear()方法的
如果是之前说的情况,即临时改变数据源还在保存范围以内,则可以用.datasource=null方法来代替