2012-03-08 72 views
0

Windows Forms,VB application ...原諒我這個非常基本的問題,但我忽略了一些非常簡單的東西。我想有一個標籤顯示變量的當前值作爲每個循環的運行..我創建了一個非常簡單的Button Click事件來找出它的失敗。因爲現在這個值不會在每個循環結束運行之後才顯示出來,每次循環運行時它都應該顯示計數器的值......我知道這是可能的,而且非常簡單,對於我的生活無法弄清楚爲什麼我錯過了酒吧,因爲它應該不斷更新標籤反映? 測試子如下:textbox text not while while for each loop running

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    Dim counter As Integer = 0 
    For x As Integer = 1 To 200000 
     counter += 1 
     Label1.Text = Convert.ToString(counter) 
    Next 
End Sub 
+0

添加Label1.Update()。這將工作大約5秒,直到Windows停止。 – 2012-03-08 04:11:47

回答

5

嘗試添加一行:Application.DoEvents()內循環。

+0

這肯定會回答這個問題,但是如果您使用的是DoEvents,您還應該考慮這樣一個事實,即它以一種您可能沒有預料到的方式打開用戶與UI進行交互的可能性。例如,用戶可以在循環運行時關閉窗體,他們可以點擊按鈕(如果按鈕首先觸發循環,這可能會特別有趣)。它有一個目的,但最好不要在UI線程上運行長操作。 – codechurn 2012-03-08 03:46:57

+0

請記住,DoEvents會減慢循環的實際執行速度。像這些東西通常在其他線程中執行,同時釋放GUI線程。檢查出BackgroundWorker。 – 2012-03-08 04:14:19