我建立了一个库,使用Console.WriteLine();输出大部分的调试文本。
现在我正在将该库用于Windows Forms应用程序中,并且仍需要访问控制台输出。(以列表/富文本框形式显示)
我注意到我可以重写控制台的标准输出到TextWriter,但是如何将这些数据传输到显示器上呢?
我尝试着做一些类似下面的事情:
public partial class Form1 : Form
{
Timer T;
MemoryStream mem;
StreamWriter writer;
public Form1()
{
InitializeComponent();
mem = new MemoryStream(1000);
writer = new StreamWriter(mem);
Console.SetOut(writer);
T = new Timer();
T.Interval = 250; // yes this probally is to short.
T.Tick += new EventHandler(T_Tick);
T.Start();
Console.WriteLine("output");
Console.WriteLine("AnotherLine");
}
void T_Tick(object sender, EventArgs e)
{
string s = Encoding.Default.GetString(mem.ToArray());
string[] Lines = s.Split(Environment.NewLine.ToCharArray());
Output.Items.Clear(); // Output is a listbox
foreach (string str in Lines)
Output.Items.Add(str);
}
}
但是一切努力都没有效果。有什么想法吗?
已经删除了不必要的代码。