Распоряжаться пользовательскими элементами управления, действительно предназначенными для редактирования файла .designer.cs?
-
21-08-2019 - |
Вопрос
Для пользовательского элемента управления с внутренними структурами данных, которые должны быть удалены, является ли правильным местом добавление этого кода в метод Dispose в файле .designer.cs, или есть событие или что-то, что мы должны использовать вместо этого?
Редактировать:Это пользовательский элемент управления winforms.
Решение
Если вы говорите о WinForms, я обычно использую один из двух подходов для решения этой проблемы.
Подход 1
Откройте файл Form.Designer.cs.Внутри сгенерированного метода dispose я добавляю вызов DisposeCore.Затем я возвращаюсь в Form.cs и добавляю метод DisposeCore, который теперь будет вызываться во время dispose.Я добавляю всю свою логику dispose в этот метод.
Редактирование файла конструктора технически не поддерживается.Однако я обнаружил, что это конкретное редактирование не будет удалено, когда дизайнер восстановит код.
Подход 2
Добавьте обработчик события в Form.Disposed и выполните мою логику dispose в обработчике.Это предпочтительный способ, потому что это поддерживаемая операция, и на нее не повлияет какое-либо поколение дизайнеров, с которым вам еще предстоит столкнуться.
Другие советы
Не могли бы вы уточнить, какие элементы управления? ASP.NET, WinForms?
В ASP.NET вы можете:
protected override void OnUnload(EventArgs e){
base.OnUnload(e);
//Unload here...
}
Или вы могли бы вырезать и вставить его в основной файл .cs.Этот код не находится внутри "сгенерированного дизайнером компонентов #region code", поэтому Studio его не пропустит.