Ваша проблема в том, что если пользователь закроет форму, объект будет удален.
Есть несколько способов справиться с этим, некоторые из них более элегантны, чем другие.
- Добавьте обработчик для FormX_Closed (), в это время вы можете сбросить ссылку на тег
- Вы можете переключиться на процесс «Показать диалоговое окно», а затем выполнить сброс до завершения метода DoubleClick ()
Это действительно зависит от того, что делают эти формы. Обычно я вижу, как ваш метод DoubleClick выполняет поиск, а затем создает экземпляр, просто потому, что если вы создаете экземпляры, вы используете память, которая может не потребоваться, но это может потребоваться с учетом вашего приложения.
Пример поиска
Как и требовалось в комментариях, если бы я делал это по-другому, я бы использовал значение перечисления или даже простое целочисленное значение «ключ» для тега. Тогда я бы создал что-то вроде следующего, чтобы показать это.
Select Case myTag
Case 1
Dim formInstance As New Form1()
formInstance.Show()
Case Else
Dim formInstance As New Form2()
formInstance.Show()
End Select
По сути, централизуйте ее и запустите форму по требованию, вы можете переключить ее на другой шаблон проектирования, если вам нужен больший контроль или у вас много разных типов форм.