2009-12-01 28 views
0
private void Discogs_NewStatusMessage(object sender, NewStatusMessageEventArgs e) 
    { 
     textBox1.Text += e.Message() + "\r\n"; 
    } 

我在窗體上有上面的事件處理程序,我試圖更新窗體上的文本框來顯示消息,這些消息發生在類的代碼中的不同點以顯示進度。如何讓文本框更新爲代碼完成時不發生的事件?

所有消息都顯示在文本框中,但直到類代碼完成後纔會顯示。

我在做什麼錯?

回答

2

您需要嘗試刷新文本框,以便UI隨更改而更新。

+0

找到我發佈後的瞬間。謝謝! – Dave 2009-12-01 19:53:50

3

您應該將操作放在單獨的線程上,然後在進行進度時調用UI線程。有關如何實現單獨的線程,請參閱this

+1

DUDE!不要光滑地推薦Application.DoEvents(),有許多許多複雜和非常可怕的方式,你可以通過使用它來認真地破壞事物。警告。警告!儘管你的第一個建議充滿了勝利。 +1 – Quibblesome 2009-12-01 19:48:00

+0

我與@Quibblesome合作 – 2009-12-01 19:49:37

+1

添加了警告;) – 2009-12-01 19:50:40

0

,您可以使用的TextChanged事件處理函數的事件,這裏是一個例子,當文本框爲空,則背景變爲深紅色時,它的填充,背景更改默認顏色:

 
private void textBox1_TextChanged(object sender, EventArgs e){ 
    if (this.textBox1.TextLength == 0) 
    { 
     this.textBox1.BackColor = System.Drawing.Color.Crimson; 
    } 
    else 
    { 
     this.textBox1.BackColor = System.Drawing.SystemColors.Window; 
    } 
} 

你明白了,你甚至可以將它設置爲顯示一個標籤,顯示使用TextLength屬性輸入的字符數,每次更新。

希望這會有所幫助, 最好的問候, 湯姆。

相關問題