DataGridView.DataSource=dt;
SPMC.DataSource = dt;
SPMC.DisplayMember = "spmc";
SPMC.ValueMember = "spmc";
dt.Dispose();
当执行完
dt.Dispose();可以断点看一下
dt对象本身没有立即被垃圾回收器回收,而是他们相对于两个控件的引用关系发生了变化
这时的DataGridView.DataSource还是引用dt,而SPMC.DataSource已经为null了这里问一下如梦大哥,为什么会有这样的不同呢?
SPMC.DataSource = dt;
SPMC.DisplayMember = "spmc";
SPMC.ValueMember = "spmc";
dt.Dispose();
当执行完
dt.Dispose();可以断点看一下
dt对象本身没有立即被垃圾回收器回收,而是他们相对于两个控件的引用关系发生了变化
这时的DataGridView.DataSource还是引用dt,而SPMC.DataSource已经为null了这里问一下如梦大哥,为什么会有这样的不同呢?
dt.Dispose();
前应该加一个邦定函数,dt里面的数据才能显示在控件里面
this.Site.Container.Remove(this);
并且引发Disposed事件SPMC类要么在设置DataSource属性的时候,把自己设置成了dt的宿主容器,要么监听了dt的Disposed事件,所以在dt.Dispose后能够把自己的DataSource属性重设成null,而DataGridView没有这样做。
((IComponent) this.dataSource).Disposed += new EventHandler(this.DataSourceDisposed);
完成注册dt.Disposed事件:在combbox的DataSourceDisposed方法中,调用私有方法:
this.SetDataConnection(null, new BindingMemberInfo(""), true);
把datasource属性设成null