Распоряжаться пользовательскими элементами управления, действительно предназначенными для редактирования файла .designer.cs?

StackOverflow https://stackoverflow.com/questions/672980

Вопрос

Для пользовательского элемента управления с внутренними структурами данных, которые должны быть удалены, является ли правильным местом добавление этого кода в метод 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 его не пропустит.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top