如果我有這樣的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