2016-08-09 8 views
-2

特定の条件に当てはまる場合、ステータスバーに30秒間メッセージを表示しようとしています。何らかの理由で、タイマーが有効になっているときにTimer.Tickイベントが実行されていないため、私はTickサブに何かが見つからないと確信していますが、それを把握することはできません。VB.Net Timer.Tick Not Firing

ここに私のコードです:

Dim StatusSecondsPassed As Integer = 0 
    Dim StatusTimer As New Timer() 
    Dim StatusTextField As New ToolStripStatusLabel 


    Public Function WriteStatus(SS As String) 


     If StatusTimer.Enabled = True Then 
      StatusTimer.Enabled = False 
     End If 


     StatusSecondsPassed = 0 

     StatusTimer.Interval = 1 * 1000 

     StatusTimer.Enabled = True 

     Return SS 
    End Function 

    Public Sub StatusTimer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) 

     Dim cMain_Form As Main_Form 

     StatusSecondsPassed += 1 

     If StatusSecondsPassed = 30 Then 
      cMain_Form.StatusTextBox.Text = "" 
     End If 


    End Sub 

任意のアイデア?私はダニサブの端にHandlesを入れてみましたが、私はHandles StatusTimer.Tick

+0

ビット不公平を... – SilverShotBee

+1

-1 downvotesについてwhinesがコメントを残す:AddHandlerの句を使用すると、実行してイベントリスナーを削除することができます。質問をdownvotingすることについて「不公平」はありません。誰もコメントを残す義務はありません。 –

答えて

3

を置くあなたがイベントを処理する必要がある場合には、エラーが発生します。

AddHandler StatusTimer.Tick, AddressOf StatusTimer_Tick 

この行は、いつでもTickイベントが発生したと述べて、あなたのサブ呼び出されます。

あなたがHandles原因を使用したい場合は、あなたがこのようなあなたのタイマーを宣言する必要があります。

Dim WithEvents StatusTimer As New Timer() 

'And your sub 
Public Sub StatusTimer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles StatusTimer.Tick 

しかしながら、この方法は、あなたが関連付けを削除することはできません。

RemoveHandler StatusTimer.Tick, AddressOf StatusTimer_Tick 
downvoteと改善する必要があるもので、その後ノーコメントの
+0

おかげさまでSuperPeanut!あなたが私を助けてくれた初めてのことではありません! – SilverShotBee

+0

ハンドラで 'Handles'を有効にするには、宣言に' With Events'が必要です。 – Enigmativity

+0

@Enigmativityあなたのコメントに続いて更新された回答 –