当代码完成时,如何在事件发生时更新文本框?

时间:2009-12-01 19:43:30

标签: c# events

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

我的表单上有上面的事件处理程序,我正在尝试更新表单上的文本框,以显示在类的代码中的不同点发生的消息,以显示进度。

所有消息都显示在文本框中,但在类代码完成之后才会出现。

我做错了什么?

3 个答案:

答案 0 :(得分:3)

您应该将操作放在单独的线程上,然后在进行时调用UI线程。有关如何实现单独线程的信息,请参阅this帖子。

答案 1 :(得分:2)

您需要尝试刷新文本框,以便UI随更改一起更新。

答案 2 :(得分: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属性输入的字符数,每次更新。

希望这有帮助, 最好的祝福, 汤姆。