如何将Console输出转向到TextBox?

如何将Console输出转向到TextBox?

1. Console输出绑定到TextWriter

需要用到Console的关键属性SetOutSetOut要求参数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)

}

}