C# 如果事件没有在代码完成时发生,如何更新文本框?
我的表单上有上面的事件处理程序,我正在尝试更新表单上的一个文本框,以显示在类的不同代码点出现的消息,以显示进度 所有消息都会显示在文本框中,但直到类代码完成后才会显示C# 如果事件没有在代码完成时发生,如何更新文本框?,c#,events,C#,Events,我的表单上有上面的事件处理程序,我正在尝试更新表单上的一个文本框,以显示在类的不同代码点出现的消息,以显示进度 所有消息都会显示在文本框中,但直到类代码完成后才会显示 我做错了什么?您应该将操作放在单独的线程上,然后在取得进展时调用UI线程。请参阅关于如何实现独立线程的帖子 应该将操作放在单独的线程上,然后在取得进展时调用UI线程。请参阅关于如何实现独立线程的帖子 您需要尝试刷新文本框,以便UI随更改而更新。您需要尝试刷新文本框,以便UI随更改而更新。您可以使用的事件是TextChanged事件
我做错了什么?您应该将操作放在单独的线程上,然后在取得进展时调用UI线程。请参阅关于如何实现独立线程的帖子 应该将操作放在单独的线程上,然后在取得进展时调用UI线程。请参阅关于如何实现独立线程的帖子 您需要尝试刷新文本框,以便UI随更改而更新。您需要尝试刷新文本框,以便UI随更改而更新。您可以使用的事件是TextChanged事件处理程序,下面是一个示例,当文本框为空时,填充后背景变为深红色,背景更改为默认颜色:
private void Discogs_NewStatusMessage(object sender, NewStatusMessageEventArgs e)
{
textBox1.Text += e.Message() + "\r\n";
}
私有void textBox1\u TextChanged(对象发送方,事件参数e){
如果(this.textBox1.TextLength==0)
{
this.textBox1.BackColor=System.Drawing.Color.Crimson;
}
其他的
{
this.textBox1.BackColor=System.Drawing.SystemColors.Window;
}
}
您可以将其设置为显示一个标签,显示使用TextLength属性输入的字符数,每次都会更新
希望这有帮助,
顺致敬意,
Tom。您可以使用的事件是TextChanged事件处理程序,下面是一个示例,当文本框为空时,背景在填充时变为深红色,背景变为默认颜色:
private void Discogs_NewStatusMessage(object sender, NewStatusMessageEventArgs e)
{
textBox1.Text += e.Message() + "\r\n";
}
私有void textBox1\u TextChanged(对象发送方,事件参数e){
如果(this.textBox1.TextLength==0)
{
this.textBox1.BackColor=System.Drawing.Color.Crimson;
}
其他的
{
this.textBox1.BackColor=System.Drawing.SystemColors.Window;
}
}
您可以将其设置为显示一个标签,显示使用TextLength属性输入的字符数,每次都会更新
希望这有帮助,
顺致敬意,
汤姆。伙计!不要只是轻率地推荐Application.DoEvents()有很多复杂而可怕的方法,你可以通过使用它来严重破坏事物。警告。警告!不过,你的第一个建议充满了成功+1如果你想要一个免费的:想象一个计时器滴答作响。它在它的Tick处理程序中做了大量的工作,实际上只要间隔值为。然后调用Application.DoEvents()。这使得计时器再次启动。如果这种情况持续下去,则会出现堆栈溢出。编辑:已删除DoEvents。谢谢你指出我缺乏知识。:)你不需要删除它tbf,它是一种有效的做事方式。只是。。。。。有风险!:)伙计!不要只是轻率地推荐Application.DoEvents()有很多复杂而可怕的方法,你可以通过使用它来严重破坏事物。警告。警告!不过,你的第一个建议充满了成功+1如果你想要一个免费的:想象一个计时器滴答作响。它在它的Tick处理程序中做了大量的工作,实际上只要间隔值为。然后调用Application.DoEvents()。这使得计时器再次启动。如果这种情况持续下去,则会出现堆栈溢出。编辑:已删除DoEvents。谢谢你指出我缺乏知识。:)你不需要删除它tbf,它是一种有效的做事方式。只是。。。。。有风险!:)在我发帖的几分钟后就想出来了。非常感谢。在我发帖的几分钟后就想出来了。非常感谢。