2012-07-12 36 views
-4
for(int a=0;a<10;a++) 
{ 
txtblck =txtblk+ a.ToString(); 
} 

在此,txtbox顯示最後的所有文本。 我想逐個顯示文字。我想不斷在文本框中顯示文本

+6

你的眼睛是太慢... – mindandmedia 2012-07-12 10:49:27

+0

是txtblck和txtblk兩個不同的控件是一個錯字?你不需要'txtblck.Text'嗎?下次只需複製/粘貼代碼即可。 – 2012-07-12 10:58:32

+0

@ abhi294074如果有任何答案可以解決您的問題,請將其標記爲您接受的答案。 – Schaliasos 2012-07-12 11:36:35

回答

2

發生這種情況是因爲for循環運行速度太快,以至於您實際上看不到TextBox正在更改的文本。使用System.Threading.Thread.Sleep方法暫停循環一會兒讓您可以觀看文本變化:

for(int a = 0; a < 10; a++) 
{ 
    txtblck =txtblk + a.ToString(); 
    System.Threading.Thread.Sleep(1000); 
} 
+2

在downvoting時留下評論會很好。 – Schaliasos 2012-07-12 11:03:38

+0

線程睡眠沒有任何好處。 UI線程在for結束之前未更新... – 2012-07-12 12:00:28

4

你可以試試這個

for (int a = 0; a < 10; a++) 
    { 
     txtblck.Text = txtblck.Text + a.ToString(); 
     Application.DoEvents(); 
     System.Threading.Thread.Sleep(1000); 
    } 
0

嘗試是這樣的:(我假設你使用WPF但任何計時器會做)

System.Windows.Threading.DispatcherTimer timer; 
int a, count; 

void start() { 
    timer = new System.Windows.Threading.DispatcherTimer(); 
    a = 0; 
    count = 10; 
    timer.Tick += timer_Tick; 
    timer.Interval = new TimeSpan(0, 0, 1); 
    timer.Start(); 
} 

void timer_Tick(object sender, EventArgs e) { 
    updateString(); 
} 

void updateString() { 
    if (a < count) { 
     txtblck.Text += a.toString(); 
     a++; 
    } 
    else { 
     timer.Stop(); 
    } 
} 
相關問題