using System.Windows.Forms;
class TextBoxWriter : TextWriter
{TextBox textBox;
delegate void WriteFunc(string value);
WriteFunc write;
WriteFunc writeLine;
public TextBoxWriter(TextBox textBox)
{
this.textBox = textBox;
write = Write;
writeLine = WriteLine;
}
// 使用UTF-16避免不必要的编码转换
public override Encoding Encoding
{
get { return Encoding.Unicode; }
}
// 最低限度需要重写的方法
public override void Write(string value)
{
if (textBox.InvokeRequired)
textBox.BeginInvoke(write, value);
else
textBox.AppendText(value);
}
// 为提高效率直接处理一行的输出
public override void WriteLine(string value)
{
if (textBox.InvokeRequired)
textBox.BeginInvoke(writeLine, value);
else
{
textBox.AppendText(value);
textBox.AppendText(this.NewLine);
}
}
}
先把上面这个类放到工程目录里(也是从别人那里copy来的^_^);
在窗体的构造器里加上下面这句就搞定了.
Console.SetOut(new TextBoxWriter(tbConsole));
tbConsole 是要显示信息的TextBox的实例名。
做完上面的步骤, 任何地方调用Console.write/writeLine, 信息都会在tbConsole里打印出来了!
本文介绍如何将C#中的Console.Write和Console.WriteLine输出从控制台重定向到TextBox。通过创建一个TextBoxWriter类,并在窗体构造器中设置Console.SetOut,可以实现控制台信息实时显示在TextBox中。
1595

被折叠的 条评论
为什么被折叠?



