2017-09-20 31 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()它應該工作。