2016-10-07 8 views
0

は、関数内でイベントハンドラを取得する方法はありますか? Tickイベント(t.Tick)を処理する必要があります。ここに私の意味は次のとおりです:ハンドルのイベント

Public Shared Function SetTime(ByVal x As Label) 
    Dim t As New Timer 
    t.Enabled = True 
    t.Interval = 100 
    t.Start() 
    'I need the handler here 
    x.Text = Date.Now.ToShortTimeString() 
    'I need the handler to end here 
    Return True 
End Function 

助けていただければ幸いです。

+0

ハンドラどのイベントのために?何が起こっていますか?ハンドラのロジックの一部として 'x'をインクルードしようとしていますか? – Brandon

+0

Xはラベルで、ラベルのテキストを100 MSごとに現在の時刻に設定しようとしています。タイマーが動作しています(私は信じています)。ハンドラが必要です。私は必要なイベントを説明したので、あなたがそれを逃した方法を理解していません。 – NITPRUDO

+0

あなたの便宜のために、私はt.Tickイベントが必要です。 – NITPRUDO

答えて

0

Tickイベントハンドルが別のサブにする必要があります。タイマーを作成するときに、Tickイベントを処理するSubのアドレスを指定できます。クラスレベルの変数にLabelへの参照を格納する必要があります。

Private Shared timeLabel As Label, myTimer As Timer 

Public Shared Function SetTime(ByVal x As Label) As Boolean 
    timeLabel = x 

    myTimer = New Timer 
    myTimer.Enabled = True 
    myTimer.Interval = 100 
    AddHandler myTimer.Tick, AddressOf myTimer_Tick 
    myTimer.Start() 
    Return True 
End Function 

Private Shared Sub myTimer_Tick(sender As Object, e As EventArgs) 
    timeLabel.Text = Date.Now.ToShortTimeString() 
End Sub 
+0

タイマーはガベージコレクションされません。タイマーの宣言をフォームのスコープレベルに移動します。 – LarsTech

+0

@LarsTech良い点。私はそれを修正します。 – Blackwood

+0

別のフォームから呼び出す必要があるので、共有する必要があります。この関数はクラスにあります。 – NITPRUDO

関連する問題