【问题标题】:How to make the startup form initially invisible or hidden如何使启动表单最初不可见或隐藏
【发布时间】:2010-07-20 09:45:43
【问题描述】:

如何使启动窗体最初不可见或隐藏

我有一个带有 2 个表单的 GUI 项目,这些表单必须单独显示。即显示表格1时,必须隐藏所有其他表格。

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

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

【问题讨论】:

    标签: c# .net windows winforms


    【解决方案1】:

    我猜你问的是如何让表单不出现在任务栏中,只出现在系统托盘中,就像IM或杀毒一样?

    如果是这样,只需将FormShowInTaskbar 属性设置为false

    至于使初始表单不可见,您必须在Application.Run 中使用ApplicationContext 而不是主表单。

    【讨论】:

    • 请给一些文章链接
    • 我给了你一个链接 - 点击ApplicationContext
    【解决方案2】:

    微软为此写了一个网页。它给出了使用ApplicationContext 的示例。基本上,您拥有一个运行 Main()Main 然后打开表单的应用程序,而不是表单应用程序。

    http://msdn.microsoft.com/en-us/library/Aa984417

    但是,这样会失去功能,因为您必须禁用“应用程序框架”。它会让你的 Windows 变得丑陋。

    这是一个不同的解决方案,几乎是一个 hack,但还不错。当 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
    

    【讨论】:

      【解决方案3】:

      将 ShowInTaskbar 属性设置为 false 并将 WindowState 设置为最小化

      【讨论】:

        猜你喜欢
        • 2022-11-16
        • 1970-01-01
        • 2023-02-10
        • 2010-10-06
        • 1970-01-01
        • 1970-01-01
        • 2019-09-24
        • 2010-10-05
        • 1970-01-01
        相关资源
        最近更新 更多