FormA и FormB - это классы в VB, экземпляры которых могут создаваться так же, как и в C #.
Однако Microsoft добавила поддержку автоматических экземпляров форм по умолчанию в VB.Net в VS2005, чтобы поддержать разработчиков, переходящих с VB classic, которые были озадачены необходимостью создавать экземпляры форм и управлять ими.
Однако это НЕ считается наилучшей практикой программирования, поскольку может привести к различным проблемам, таким как невозможность доступа к форме из фонового потока и невозможность создания нескольких экземпляров формы.
Как только вы поймете ООП и создание экземпляров классов, нет абсолютно никаких причин использовать экземпляры по умолчанию.
Фактически, вы можете отключить использование экземпляров формы по умолчанию, создав Sub New
в форме, объявленной Friend
(чтобы ее можно было создать в другом месте в проекте):
Friend Sub New()
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
End Sub
или путем изменения Public Sub New для включения параметров:
Public Sub New(SomeValue As String)
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
End Sub
В любом случае любые ссылки на экземпляр формы по умолчанию приведут к следующим двум ошибкам во время компиляции, где бы то ни былоссылка на экземпляр по умолчанию:
«Form1» является типом в «WindowsApplication1» и не может использоваться в качестве выражения.
Ссылка на элемент без общего доступа требует ссылки на объект.
Сказав все это о том, как ваше текущее приложение работает в VB.Net, конкретный ответ на ваш вопрос о C # заключается в том, что вам всегда нужно создавать новые экземпляры форм в C #.
Например:
AddForm(new formA(), new formB());