【发布时间】:2017-09-20 11:16:28
【问题描述】:
我有一个在启动时使用 NotifyIcon 隐藏的 VB.NET 应用程序。
有一个每 10 秒执行一次的计时器……在计时器中:
如果文件存在,则不会执行任何操作。但是如果不存在,我会执行:
MySubOrFunction()
如果应用程序被隐藏,则不会执行 MySubOrFunction() 代码......正如我在上面告诉你的“我的应用程序在启动时被隐藏”
我尝试了 "Public Sub" 、 "Private Sub" ,同样适用于 "Function" ...我也尝试了 "Shared Function" 但它无法工作,因为我的某些代码需要访问另一个不在内部的代码函数/子。
我试图保持表单打开并且一切正常,但我希望它被隐藏:(
任何帮助将不胜感激!
谢谢! :-)
编辑:示例在这里(抱歉错过):
关于 Form_Load 事件:
Timer2.Enabled = True
Timer2.Start()
Timer2 每 5 秒执行一次,这里是 Timer2_Tick
Timer1.Enabled = True
Timer1.Start()
这是 Timer1_Tick
MySubOrFunction("start")
这里是 MySubOrFunction
Private Sub MySubOrFunction(ByVal status As String)
If status = "start" Then
' My Code Here
Return
End If
If status = "stop" Then
Return ' stop the function
End If
End Sub
这是我隐藏我的应用程序的方式:
Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
If Me.WindowState = FormWindowState.Minimized Then
NotifyIcon1.Visible = True
NotifyIcon1.Icon = SystemIcons.Application
NotifyIcon1.BalloonTipIcon = ToolTipIcon.Info
NotifyIcon1.BalloonTipTitle = "AppName"
NotifyIcon1.BalloonTipText = "AppDesc"
NotifyIcon1.ShowBalloonTip(50000)
'Me.Hide()
ShowInTaskbar = False
End If
End Sub
Private Sub NotifyIcon1_MouseDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles NotifyIcon1.MouseDoubleClick
Me.Visible = True
'Me.Show()
ShowInTaskbar = True
Me.WindowState = FormWindowState.Normal
NotifyIcon1.Visible = False
End Sub
Protected Overrides Sub SetVisibleCore(ByVal value As Boolean)
If Not Me.IsHandleCreated Then
Me.CreateHandle()
value = False
End If
MyBase.SetVisibleCore(value)
End Sub
当应用程序没有被隐藏时,这可以正常工作......这些只是示例,而不是完整的代码!
【问题讨论】:
-
该功能仅在应用程序隐藏时不运行,但是当应用程序未隐藏时,它运行良好。所以定时器没有任何问题。
-
您需要提供minimal reproducible example。我们如何在不看代码的情况下提供建议?
-
定时器在哪个表单事件中?
-
@NikolaosPolygenis 定时器不在任何事件中,它在它自己的事件中(Timer_Tick)
-
@Enigmativity 我尽量不粘贴我项目的任何代码...我现在将发布相同代码的示例...
标签: vb.net