Microsoft написала веб-страницу об этом.Это дает пример использования ApplicationContext
.По сути, вместо приложения форм у вас есть приложение, которое запускает Main()
и Main
, а затем открывает формы.
http://msdn.microsoft.com/en-us/library/Aa984417
Таким образом вы теряете потерю функциональности,однако, потому что вы должны отключить «каркас приложения».Это сделает вашу Windows ужасной.
Вот другое решение, почти взломанное, но не слишком плохое.Когда Windows запускает ваше приложение для формы и устанавливает Visible
в значение true, это вызывает вызов SetVisibleCore
.Вы можете переопределить эту функцию.При первом вызове SetVisibleCore
установите значение false.С этого момента просто проходите.
Имейте в виду, что Form.Load
не сработает при запуске вашего приложения, если форма не отображается, поэтому переместите весь код туда в Sub New()
.
Вот и все:
Public Sub New()
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
config.LoadFromRegistry() 'this gets config.StartMinimized from the registry
' Code that needs to run at start, even if the form isn't showing,
' should be here. Form.Load will only happen when the Form is actually
' visible for the first time.
End Sub
Dim FirstSetVisible As Boolean = True
Protected Overrides Sub SetVisibleCore(ByVal value As Boolean)
If config.StartMinimized And FirstSetVisible Then
MyBase.SetVisibleCore(False) 'ignore Windows attempt to set Visible
FirstSetVisible = False 'never do this again
Else
MyBase.SetVisibleCore(value)
End If
End Sub