Утилизировать на пользовательских элементах управления, действительно предназначены для редактирования файла .designer.cs? - PullRequest
3 голосов
/ 23 марта 2009

Для пользовательского элемента управления с внутренними структурами данных, который должен быть расположен, это правильное место для добавления этого кода в метод Dispose в файле .designer.cs, или же вместо него есть событие или что-то, что мы должны использовать

Редактировать : Это пользовательский элемент управления winforms.

Ответы [ 3 ]

3 голосов
/ 23 марта 2009

Если вы говорите о WinForms, я обычно использую один из двух подходов для решения этой проблемы.

Подход 1

Откройте файл Form.Designer.cs. Внутри сгенерированного метода dispose я добавляю вызов DisposeCore. Затем я возвращаюсь в Form.cs и добавляю метод DisposeCore, который теперь будет вызываться во время удаления. Я добавляю всю мою логику утилизации в этот метод.

Редактирование файла конструктора технически не поддерживается. Однако я обнаружил, что это конкретное редактирование не будет смыто, когда дизайнер регенерирует код.

Подход 2

Добавьте обработчик событий в Form.Disposed и сделайте мою логику удаления в обработчике. Это предпочтительный способ, потому что это поддерживаемая операция, и на нее не повлияет какое-то поколение дизайнеров, с которым вам еще предстоит столкнуться.

1 голос
/ 26 февраля 2014

Или вы можете вырезать и вставить его в основной файл .cs. Этот код не находится внутри «кода, сгенерированного #region Component Designer», поэтому Studio не пропустит его.

1 голос
/ 23 марта 2009

Не могли бы вы уточнить, какие элементы управления? ASP.NET, WinForms?

В ASP.NET вы можете:

protected override void OnUnload(EventArgs e){
     base.OnUnload(e);
     //Unload here...
}
...