2009-10-26 434 views
2

我目前正在使用VB.Net 2008.
該項目有「make single instance application」複選框被選中。VB.net窗體恢復不顯示窗體

該應用程序通過在窗體最小化時隱藏窗體來工作。

Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize 
    If Me.WindowState = FormWindowState.Minimized Then 
     Me.Hide() 
    End If 
End Sub 

當在notifyicon中按下適當的菜單項時,表單應該再次顯示自己。

 Private Sub ShowToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ 
         Handles ShowToolStripMenuItem.Click 
      Me.Show() 
      Me.WindowState = FormWindowState.Normal 
     End Sub 

此工作正常,直到用戶嘗試打開同一個應用程序,同時窗體最小化。當發生這種情況時,應用程序將阻止用戶試圖按預期打開的應用程序的新實例,但是當用戶然後從notifyicon的菜單中顯示錶單時,它將似乎打開(它將顯示任務欄中的表單)但沒有顯示窗口。

此時窗口可以最大化並按預期工作,但通過使用恢復按鈕窗口不會被繪製,但仍然會顯示在任務欄中。

如果有任何幫助可以給出如何正確恢復窗體被隱藏它將不勝感激。

在此先感謝

回答

0

只是一對夫婦的建議...

除了使用隱藏()和show()的,你可以使用,而不是形式的ShowInTaskBar屬性?

將你的Hide()和true設置爲false,你現在使用Show(),看看它是否有什麼不同。

或者在調用Show()之前將WindowState設置爲Normal。

+0

首先感謝您的回覆。 澄清功能在正常操作中按預期工作。直到有人試圖在當前應用程序最小化的情況下啓動應用程序的新實例。 我會嘗試用showintaskbar屬性的建議,這聽起來很有希望。 – 2009-10-27 15:31:29

+0

剛剛測試了showintaskbar屬性。 它可以工作,但會發生不同的錯誤。當表單被最小化並且用戶試圖啓動應用程序的新實例時,表單會重新出現。此外,當表單被最小化時,標題欄會顯示在屏幕的左下角,但只有當包含試圖啓動應用程序的.exe的窗口未被最小化時纔會顯示。一旦窗口最小化,窗體將正常工作。 再次感謝您的回覆。 – 2009-10-27 15:33:28