將Console輸出轉向到TextBox

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

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)

}

}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章