Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果事件没有在代码完成时发生,如何更新文本框?_C#_Events - Fatal编程技术网

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,它是一种有效的做事方式。只是。。。。。有风险!:)在我发帖的几分钟后就想出来了。非常感谢。在我发帖的几分钟后就想出来了。非常感谢。