У меня есть приложение, которое может запускать/обновлять форму (позволяет называть ее QuickNoteForm) из множества разных действий. Он может запускать форму из разных вкладок и в основном запускаться через кнопки по всему моему приложению.
Я в основном хочу отслеживать, откуда он был запущен, т.е. Мне нужно отслеживать его Launch Path.
Что было бы хорошим подходом к реализации этого. Я думал о том, чтобы заключить это как свойство, которое устанавливается через конструктор QuickNoteForm. Я хочу отслеживать, с каких действий была запущена эта форма.
Это приложение для форм Windows, а не приложение asp.net.
Благодарю.
Создайте перечисление, в котором будут перечислены все возможные пути (или статический класс с константами, если вы беспокоитесь о ремонтопригодности, перечисления не работают хорошо при компиляции, а затем изменены). Добавьте в форму пользовательский конструктор, который будет принимать это перечисление в качестве параметра. Когда вы создаете экземпляр формы, используйте этот конструктор. В основном замените все вхождения New QuickNoteForm()
с помощью New QuickNoteForm(yourEnumValue)
. Для совместимости добавьте значение Unknown = 0
в перечисление, таким образом, конструктор по умолчанию, создающий по умолчанию, тоже будет работать, просто не так полезен.
Если этот подход не является практичным (просьба предоставить более подробную информацию о вашем приложении), вы также можете указать параметр "Контекст как параметр" в своем конструкторе форм. Затем If typeOf ctl Is Button AndAlso DirectCast(ctl, Button).Text = "Something" Then
код типа If typeOf ctl Is Button AndAlso DirectCast(ctl, Button).Text = "Something" Then
и всевозможные сумасшедшие вещи. Это способствует разграничению проблем, то есть вызывающему коду не нужно знать, как звонить и только передавать себя как параметр, но также делает ваш код более сложным для поддержания, потому что вы можете получить один гигантский метод "все-все-все", который соединит все части вместе.