2010-07-20 37 views
8

如何使啓動窗體最初不可見或隱藏如何使啓動窗體最初不可見或隱藏

我有一個帶有2窗體的GUI項目,窗體必須單獨顯示。即,當顯示錶格1時,所有其他表格必須隱藏。

我可以隱藏所有其他表格,但我無法隱藏啓動窗體。因此我的應用程序在系統托盤中的圖標。

例如,防火牆/防病毒和即時消息應用程序可以這樣做,以便在後臺運行,並且仍然可以從系統托盤訪問用戶。

回答

5

我猜你在問什麼是如何使表單不出現在任務欄中,只出現在系統托盤中,就像IM或反病毒一樣?

如果是這樣,只需將FormShowInTaskbar屬性設置爲false即可。

至於使初始表單不可見,您必須在Application.Run之內使用ApplicationContext而不是主窗體。

+0

請給一些文章鏈接 – amexn 2010-07-20 10:02:23

+0

我已經給了你一個鏈接 - 點擊'ApplicationContext'。 – GenericTypeTea 2010-07-20 10:08:34

1

微軟爲此寫了一個網頁。它給出了使用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 
2

集ShowInTaskBar屬性設置爲false,將WindowState設置爲最小

相關問題