从DataGridView解除绑定BindingSource的正确方法

And*_*ndy 9 c# data-binding datagridview winforms

我有一个BindingList <>对象,设置为BindingSource的DataSource.这被设置为DataGridView的DataSource.

我担心不会导致任何潜在的内存泄漏,所以想知道在我完成数据时是否有一种首选方法来取消绑定这些连接.

我在考虑:

datagridview.DataSource = null;
bindingsource.DataSource = null;
bindingsource.Clear();
Run Code Online (Sandbox Code Playgroud)

重新绑定:

bindingsource.DataSource = bindinglist<myObjects>;
datagridview.DataSource = bindingsource;
Run Code Online (Sandbox Code Playgroud)

这个订单是正确的,还是真的重要?我是否遗漏了应该存在的任何内容?

任何指针都表示赞赏,谢谢.

Wae*_*oul 12

为datagridview DataSource分配null是清除网格数据源的最佳方法,你是对的.


Tom*_*lar 12

如果使用自定义列,请在清除DataSource之前将AutoGenerateColumns设置为false.这将确保您的自定义列保留.否则,它们将被清除并在下一个DataBind上自动生成.

datagridview.AutoGenerateColumns = false; 
datagridview.DataSource = null;
Run Code Online (Sandbox Code Playgroud)

编辑:不知道为什么这个被投票.这是非自动生成列的正确解决方案.我有项目来证明这一点.我希望有人发现它有用.