如果表单出现,NotifyIcon不会隐藏

时间:2015-02-12 12:50:54

标签: vb.net

我做了一个模态,如果我的应用程序的form2被最小化,NotifyIcon出现在系统托盘中,这非常好用。当用户执行双击时,NotifyIcon消失,稍后再次出现form2。问题是如果表单被最小化并且用户打开form1 no双击NotifyIcon但是通过导航菜单,表单正确显示但NotifyIcon不会消失。我已经看到,如果我再次最小化窗体,我在系统托盘中也有两个NotifyIcon。这会发生什么?

双击代码(正常工作) - form1

Private Sub NotifyIcon1_MouseDoubleClick(sender As Object, e As MouseEventArgs) Handles NotifyIcon1.MouseDoubleClick
    Me.Show()
    Me.WindowState = FormWindowState.Normal
    NotifyIcon1.Visible = False
End Sub
form1上的

菜单导航代码

Private Sub RisultatiToolStripMenuItem3_Click(sender As Object, e As EventArgs) Handles RisultatiToolStripMenuItem3.Click
        Dim res As New Risultati
        res.de_active()
    End Sub

form2 de_active函数(在示例中为Risultati表单)

Public Sub de_active() 
    If Application.OpenForms().OfType(Of Risultati).Any Then
        Me.Show()
        Me.WindowState = FormWindowState.Normal
        NotifyIcon1.Visible = False
    Else
        Me.Show()
    End If
End Sub

2 个答案:

答案 0 :(得分:2)

听起来你最终会遇到表单的多个实例,每个实例都有自己的NotifyIcon。工具栏按钮的代码实际上是创建表单的新实例。如果您不想要表单的多个实例,则需要使用该引用保留一个变量,并隐藏或显示该引用,而不是每次要显示该引用时都创建一个新变量。

答案 1 :(得分:0)

我已修复在调整大小表单上添加处理程序:

Private Sub Form1_Resize(sender As Object, e As System.EventArgs) Handles Me.Resize
Select Case Me.WindowState
    Case FormWindowState.Minimized
        'Show NotifyIcon
    Case FormWindowState.Normal
        'Hide NotifyIcon
    Case formWindowState.Maximized
        'hide ..
End Select
End Sub