Удалить (), Очистить () или Удалить () - PullRequest
5 голосов
/ 06 февраля 2010

Простой вопрос ...

У меня есть элементы управления, которые пользователь может перетаскивать на моей форме во время выполнения. И они также могут удалить их ... Должен ли я просто позвонить .Dispose();, когда они нажимают кнопку удаления, или я должен сделать что-то вроде panel1.Controls.Clear(Control);? ... или что-то еще?

Спасибо:)

Bael

Ответы [ 2 ]

5 голосов
/ 06 февраля 2010

Вы должны удалить его из родительской коллекции Controls, как описано в ответе Дарина Димитрова, а также вызвать Dispose:

panel.Controls.Remove(someControlInstance);
someControlInstance.Dispose();

Вы должны всегда вызывать Dispose для объектов, которые реализуют IDisposable, когда вы закончите с ними, чтобы любые неуправляемые ресурсы, которыми они владеют, немедленно высвобождались.

2 голосов
/ 06 февраля 2010

Просто снимите элемент управления с панели:

panel.Controls.Remove(someControlInstance);

Как только на него больше не будет ссылок, он будет подвергаться сборке мусора, а неуправляемые ресурсы будут правильно утилизироваться.

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