在richtextbox中显示stdout和stderr
本文关键字:stderr stdout 显示 richtextbox | 更新日期: 2023-09-27 18:25:47
如果我有这样的GUI:
---------------------
[Button]
---------------------
[RichTextbox_output]
---------------------
是否可以显示全部:
我可以从visual studio的"output"diaglog中看到的richTextbox中的stdout和stderr?
提前谢谢。
Console.Out
。Stderr称为Console.Error
。
要解决此问题,您需要重定向Console.Out
。这可以使用Console.SetOut
来完成。然后需要将其重定向到您自己的自定义字符串编写器,该字符串编写器将写入富文本框。这不是内置在文本框中的,您需要创建自己的流实现。一种可能的解决方案是将StringWriter
子类化,并重载WriteLine
方法以推送到您的文本框。
public class TextBoxWriter : StringWriter
{
public override void WriteLine(string x)
{
// Write to textbox here
}
}
显然,如果您使用的不仅仅是WriteLine
,您还必须为这些方法创建重载。
对于stderr流,Console.SetError
也可以采用相同的方法。
对于stderr,您必须将程序封装在try/catch块中。在哪里可以发现所有错误。对于stdout,有两个选项,覆盖stdout以写入textbox,或者只需在任何地方写入textbox,而不是写入stdout。
例外情况:
try {
// your program
catch (Exception e){
RichTextbox_output.AppendText()
}
这个例子要求RichTextbox在作用域内,所以在程序中的位置可能很棘手。
对于每个使用stdout的地方,代替Console.write,使用RichTextbox_output.AppendText()