1

Windowsフォームのラベルコントロールに経過時間を表示したい。そのために私は System.Timers.timer を使用していますが、ボタンクリックイベントの経過時間でラベルを更新できません。

例えば

Private Shared mtimer As System.Timers.Timer

Private Sub btnprocess_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnprocess.Click

'Counter to Calculate time as Process Starts
 mDate = Date.Now
 ''Create a timer with  second interval
 mtimer = New System.Timers.Timer()
 ''Hook the Elapsed event
 **AddHandler mtimer.Elapsed, AddressOf Processtick**
 mtimer.Start()
'set the interval 1 second 
 mtimer.Interval = 1000
 mtimer.Enabled = True

 ''Some functions 

   end sub 

Private Sub Processtick(ByVal source As Object, ByVal e As ElapsedEventArgs)

Dim ts As TimeSpan = DateTime.Now.Subtract(mDate)
lblelapsed.Text = ts.Hours & ":" & ts.Minutes & ":" & ts.Seconds

End sub

上記のコードを試してみましたが
、機能しません。ボタンのクリックですべての機能が実行されるまで、ユーザーが [プロセス] ボタンをクリックするとすぐに、ラベル コントロールの経過時間を更新したいと考えています。

助けてください。

4

1 に答える 1

0

別のスレッドで実行されるためSystem.Timers.Timer、GUI を直接更新することはできません。BeginInvoke更新を GUI スレッドに転送するには、コントロールでを使用する必要があります。残念ながら、私は vb.net に詳しくありませんが、ここでその方法の例を見つけることができます: http://msdn.microsoft.com/en-us/library/0b1bf3y3.aspx

于 2012-10-08T13:10:37.163 に答える