如何使初始forms最初不可见或隐藏
我有一个2表单的GUI项目和表单必须分开显示。 即当表格1显示时,所有其他表格必须隐藏。
我可以隐藏所有其他表单,但是我无法隐藏启动表单,以至于我的应用程序在系统托盘中的图标。
例如,防火墙/防病毒和即时消息传递应用程序可以这样做,以便在后台运行,并且仍然可以从系统托盘访问用户。
我猜你在问什么是如何使窗体不出现在任务栏,只出现在系统托盘,就像一个即时通讯或反病毒?
如果是这样,只需将Form
的ShowInTaskbar
属性设置为false
。
至于使初始表单不可见,您将不得不在Application.Run
使用Application.Run
而不是主表单。
将ShowInTaskbar属性设置为false,并将WindowState设置为最小化
微软就此写了一个网页。 它给出了一个使用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