如何将Console输出转向到TextBox?
如何将Console输出转向到TextBox?
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)
}
}