2016-02-05 53 views
-1
int i = 0; 
private void button1_Click(object sender, EventArgs e) 
{ 
    for (int j = 10; j < 1000; j = j + 1) 
    { 
     string y = i.ToString(); 
     webBrowser1.Document.GetElementById("lst-ib").SetAttribute("value", y); 
     i++; 
    } 
} 

這是代碼,我有一個Windows窗體應用程序 工作的部分,我希望它的輸入值,並顯示它往上走但是它只是跳轉到年底放置最後的輸出而不是數起來。有些人說要使用計時器,但我一直無法讓他們工作。 任何想法?Windows窗體應用程序的循環沒有工作

+0

嘗試在設置屬性後調用'webBrowser1.Refresh()'。這將強制重繪。然而,它會(因爲刪除的答案指出)更新太快,看看效果。你首先要做的是什麼? – Jens

+0

它只會在谷歌搜索框中計數。只是爲了測試。 –

+0

刷新停止動作,如果我把它放在for循環中而不顯示任何東西 –

回答

0

您正在使用循環鎖定UI線程,以便它不更新控件,直到完成其工作。當循環完成並刷新UI時,最終只會看到最終值。請參閱Timer控件。你可以告訴它定期發起一個事件,它會讓你的UI被正確更新。

Timer添加到您的Form,然後將以下代碼插入到您的構造函數中進行試用。目前,它每1毫秒更新你的元素(實際上,它不會那麼快)。

int i = 0; 
int j = 10; 

timer1.Interval = 1; 
timer1.Tick += (s, e) => 
{ 
    string y = i.ToString(); 
    webBrowser1.Document.GetElementById("lst-ib").SetAttribute("value", y); 

    i++; 
    j++; 

    if (j > 1000) 
     timer1.Stop(); 
}; 

timer1.Start(); 
+0

它仍然不顯示進入文本框的所有內容。它只是需要更長的時間才能運行(我縮短到只有j <100,睡眠時間爲10)。 –

+0

它現在是否改變,還是隻顯示最後一個值? –

+0

仍然只顯示最後一個值 –