如果我有这样的GUI:显示输出和错误中的RichTextBox
---------------------
[Button]
---------------------
[RichTextbox_output]
---------------------
是否可以显示所有:在RichTextBox的
输出和错误,我可以从“输出”看diaglog的视觉工作室?
在此先感谢。
如果我有这样的GUI:显示输出和错误中的RichTextBox
---------------------
[Button]
---------------------
[RichTextbox_output]
---------------------
是否可以显示所有:在RichTextBox的
输出和错误,我可以从“输出”看diaglog的视觉工作室?
在此先感谢。
标准输出在C#中被称为Console.Out
。斯德德被称为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
的相同方法。
这是重定向.NET输出的方式。但是,如果.NET程序调用使用'stdout'和'stderr'的本地函数,那么需要做更多的工作。 – 2012-02-24 17:22:51
对于stderr,您必须将该程序封装在try/catch块中。你在哪里捕捉到所有的错误。对于stdout,有两个选项,覆盖写入到文本框的stdout,或者直接写入到textBox而不是写入stdout。
的例外:
try {
// your program
catch (Exception e){
RichTextbox_output.AppendText()
}
这个例子需要RichTextBox的是范围之内的,所以放置在程序可能会非常棘手。
对于每一个在您使用标准输出,到位Console.write的地方,使用RichTextbox_output.AppendText()
通过输出,你是指你写给'Console.WriteLine'的stdout和'Console.Error.WriteLine'作为stderr,或者你在想什么其他的输出? – Dervall 2012-02-24 16:44:44
是的。您正确使用Console WL和Er – olidev 2012-02-24 22:33:41