2017-09-20 150 views
0

我有一个VB.NET应用程序,它在启动时使用NotifyIcon隐藏。隐藏应用程序时不执行子功能或功能

有是每10秒执行定时器......在计时器:

文件是否存在,什么都不会做。但是,如果不存在的话,我会执行:如果应用程序是隐藏的,不执行

MySubOrFunction() 

MySubOrFunction()的代码......并且我告诉你上面的“我的应用程序隐藏在启动”

我试过“公共小组”,“私人小组”,同样的“功能”也...我也尝试过“共享功能”,但它不能工作,因为我的一些代码需要访问另一个不在函数内部的代码/分。

我试图保持的形式打开,一切都很好,但我希望它被隐藏:(

任何帮助,将不胜感激!

谢谢!:-)


编辑:例子在这里(对不起,缺少它):

在Form_Load事件:

Timer2.Enabled = True 
Timer2.Start() 

定时器2每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 

这个工作很好,当应用程序没有隐藏......这些只是例子而不是完整的代码!

+0

功能不运行时应用程序是隐藏的,但是当应用程序没有隐藏时,它的效果很好。 所以计时器没有任何问题。 – MatrixCow08

+0

您需要提供[mcve]。我们如何在不看代码的情况下提供建议? – Enigmativity

+0

在哪个表单事件中有定时器? –

回答

0

我用来隐藏表单的方式就是问题!

我删除了的NotifyIcon并删除了以下内容:

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 

这里是隐藏在应用程序启动时的新途径:

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    ' hide application on startup 
    Me.Opacity = 0.0 
    Me.ShowInTaskbar = False 
    ' --------------------- 
End Sub 

Private Sub Form1_Shown(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Shown 

     Me.Visible = False 

End Sub 
2

问题是,Form_Load()未被执行,因为您隐藏表格的方式在SetVisibleCore

启用定时器在Form_HandleCreated()它应该工作。