2009-10-26 295 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