如何使初始forms最初不可见或隐藏

如何使初始forms最初不可见或隐藏

我有一个2表单的GUI项目和表单必须分开显示。 即当表格1显示时,所有其他表格必须隐藏。

我可以隐藏所有其他表单,但是我无法隐藏启动表单,以至于我的应用程序在系统托盘中的图标。

例如,防火墙/防病毒和即时消息传递应用程序可以这样做,以便在后台运行,并且仍然可以从系统托盘访问用户。

我猜你在问什么是如何使窗体不出现在任务栏,只出现在系统托盘,就像一个即时通讯或反病毒?

如果是这样,只需将FormShowInTaskbar属性设置为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