C#把Console.Write重定向TextBox(整理完善)
(主要作用于在其他类中输出的字符串直接显示到winform的TextBox控件内)
- 创建类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
namespace Server_Frm.CSS
{
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;
}
public override Encoding Encoding
{
get { return Encoding.UTF8; }
}
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);
}
}
}
}
- 在窗体构造函数private void InitializeComponent()中最后一行或者第一行添加
System.Console.SetOut(new Server_Frm.CSS.TextBoxWriter(txt_console));
- 做完上面的步骤, 任何地方调用Console.write/writeLine, 信息都会在tbConsole里打印出来了!
- 本文章转载至https://blog.csdn.net/wangpu8603/article/details/52172931,由本人二次整理。