<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
1. 將Console輸出綁定到TextWriter
需要用到Console的關鍵屬性SetOut。SetOut要求參數TextWriter,所以Write的信息都會被寫入此TextWriter中。我使用StringWriter,它可以綁定到一個StringBilder。
StringBuilder outSb=newStringBuilder();
StringWriter Sw=new StringWriter(outSb);
Console.SetOut(Sw);
Console.WriteLine(“Console Test!”);
textBox1.Text=outSb.ToString;
這樣textBox1就能顯示Console Write的信息了。但是,這還只能在TextBox中顯示以前Console.Write的信息。
2.即時顯示Console.Write的信息
這裏用一個線程來監視,即時顯示Console.Write()的信息。每500毫秒刷新一次。
System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(ConsoleOut));
Void ConsoleOut(object ObjState)
{
while(true)
{
textBox1.Text=outSb.ToString;
Thread.Sleep(500)
}
}
3.但是這樣,StringWriter會跟隨Write的信息不斷增加,這樣就需要限制StringWriter的大小。但是StringWriter沒有屬性來控制其它大小,只能通過綁定它的StringBuilder來控制其大小。
System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(ConsoleOut));
Void ConsoleOut(object ObjState)
{
while(true)
{
int i=outSb.Length;
if(i>1024000)//當尺寸超過1M時將其清空
{
outSb.Remove(0,i);
}
textBox1.Text=outSb.ToString;
Thread.Sleep(500)
}
}