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

时间:2009-10-10 09:05:02

标签: c# winforms data-binding datagridview

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

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

我在考虑:

datagridview.DataSource = null;
bindingsource.DataSource = null;
bindingsource.Clear();

重新绑定:

bindingsource.DataSource = bindinglist<myObjects>;
datagridview.DataSource = bindingsource;

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

任何指示赞赏,谢谢。

2 个答案:

答案 0 :(得分:12)

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

答案 1 :(得分:11)

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

datagridview.AutoGenerateColumns = false; 
datagridview.DataSource = null;

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