如果我有这样的GUI:
---------------------
[Button]
---------------------
[RichTextbox_output]
---------------------
是否可以显示所有内容:
我可以从visual studio的'output'diaglog中看到的richTextbox中的stdout和stderr?提前致谢。
答案 0 :(得分:5)
C#中的Stdout称为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
采用相同的方法。
答案 1 :(得分:0)
对于stderr,您必须将程序封装在try / catch块中。在哪里捕获所有错误。对于stdout,有两个选项,覆盖stdout以写入文本框或只是写入textBox到处而不是写入stdout。
例外情况:
try {
// your program
catch (Exception e){
RichTextbox_output.AppendText()
}
此示例要求RichTextbox在范围内,因此在程序中放置可能会很棘手。
对于使用stdout的每个地方,使用RichTextbox_output.AppendText()
代替Console.write