Несколько путей открытия

1

У меня есть приложение, которое может запускать/обновлять форму (позволяет называть ее QuickNoteForm) из множества разных действий. Он может запускать форму из разных вкладок и в основном запускаться через кнопки по всему моему приложению.

Я в основном хочу отслеживать, откуда он был запущен, т.е. Мне нужно отслеживать его Launch Path.

Что было бы хорошим подходом к реализации этого. Я думал о том, чтобы заключить это как свойство, которое устанавливается через конструктор QuickNoteForm. Я хочу отслеживать, с каких действий была запущена эта форма.

Это приложение для форм Windows, а не приложение asp.net.

Благодарю.

  • 0
    Статья / вопрос выше могут быть больше связаны с размышлениями и сборками. Я должен уточнить вопрос и придерживаться WindowsForms и общаться в большом приложении.
  • 0
    Я перечислил некоторые идеи в своем ответе. Чтобы быть более конкретным, пожалуйста, предоставьте более подробную информацию о вашем дизайне, некоторые скриншоты могут помочь.
Показать ещё 1 комментарий
Теги:

1 ответ

0
Лучший ответ

Создайте перечисление, в котором будут перечислены все возможные пути (или статический класс с константами, если вы беспокоитесь о ремонтопригодности, перечисления не работают хорошо при компиляции, а затем изменены). Добавьте в форму пользовательский конструктор, который будет принимать это перечисление в качестве параметра. Когда вы создаете экземпляр формы, используйте этот конструктор. В основном замените все вхождения 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 и всевозможные сумасшедшие вещи. Это способствует разграничению проблем, то есть вызывающему коду не нужно знать, как звонить и только передавать себя как параметр, но также делает ваш код более сложным для поддержания, потому что вы можете получить один гигантский метод "все-все-все", который соединит все части вместе.

  • 1
    Ваш первый абзац соответствует моему требованию. благодарю вас. Это хорошее решение для отслеживания звонящих через перечисление.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню