我做了一个模态,如果我的应用程序的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
答案 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