Правильный способ отменить привязку BindingSource из DataGridView

у меня есть BindingList объектов, установленный в источник данных BindingSource. Для этого задается значение DataSource объекта DataGridView.

Я обеспокоен тем, что не вызывает потенциальных утечек памяти, поэтому интересно, есть ли предпочтительный способ развязать эти соединения, когда я закончу с данными.

Я подумал:

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

для повторной привязки:

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

этот порядок правильный, или это действительно имеет значение? Я упустил что-нибудь, что должен быть там?

любые указатели оценены, спасибо.

2 ответов


назначение null источнику данных datagridview-лучший способ очистить источник данных grid, вы правы.


Если вы используете пользовательские столбцы, установите AutoGenerateColumns в false перед очисткой источника данных. Это обеспечит сохранение пользовательских столбцов. В противном случае они будут очищены и автоматически сгенерированы на следующем DataBind.

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

Edit:не уверен, почему это было проголосовано. Это правильное решение для не автоматически генерируемых столбцов. У меня есть проект, чтобы доказать это. Надеюсь, кому-нибудь это пригодится.