在richtextbox中显示stdout和stderr

oli*_*dev 1 c# visual-studio-2010

如果我有这样的GUI:

---------------------

[Button]

---------------------
[RichTextbox_output]

---------------------
Run Code Online (Sandbox Code Playgroud)

是否有可能显示所有:

我可以从visual studio的'output'diaglog中看到的richTextbox中的stdout和stderr?

提前致谢.

Der*_*all 5

调用C#中的stdout Console.Out.Stderr被召唤Console.Error.

要解决此问题,您需要重定向Console.Out.这可以使用Console.SetOut.然后,需要将其重定向到您自己的自定义字符写入器,该字符写入器将写入富文本框.这不是内置在文本框中,您需要创建自己的流实现.一种可能的解决方案是StringWriterWriteLine方法子类化并重载以推送到文本框.

public class TextBoxWriter : StringWriter
{
   public override void WriteLine(string x)
   {
       // Write to textbox here
   }
}
Run Code Online (Sandbox Code Playgroud)

显然,如果你使用的不仅仅是WriteLine你必须为这些方法创建重载.

Console.SetError对于stderr流,可以采用相同的方法.

  • 这是重定向.NET输出的方法.但是,如果.NET程序调用使用`stdout`和`stderr`的本机函数,则需要做更多的工作. (3认同)