Правильный способ отсоединения BindingSource от DataGridView - PullRequest
9 голосов
/ 10 октября 2009

У меня есть BindingList <> объектов, установленный в DataSource BindingSource. Это установлено в DataSource DataGridView.

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

Я думаю о:

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

Для повторного связывания:

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

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

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

Ответы [ 2 ]

12 голосов
/ 19 июля 2014

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

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

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

12 голосов
/ 10 октября 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...