簡體   English   中英

當代碼未完成時,如何在事件發生時如何更新文本框?

[英]How do I make a textbox update as an event happens not when the code has finished?

 private void Discogs_NewStatusMessage(object sender, NewStatusMessageEventArgs e)
    {
        textBox1.Text += e.Message() + "\r\n";
    }

我在窗體上具有上面的事件處理程序,並且正在嘗試更新窗體上的文本框,以顯示發生在類中代碼不同位置的消息,以顯示進度。

所有消息都出現在文本框中,但是直到類代碼完成后才出現。

我究竟做錯了什么?

您應該將操作放在單獨的線程上,然后在取得進展時調用UI線程。 有關如何實現單獨線程的信息,請參見這篇文章。

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

可以使用的事件是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屬性輸入的字符數,每次更新。

希望這對您有所幫助,湯姆,謝謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM