这是一个例子
只是好奇,我是 C# 的新手,但我决定用它来为我的 Java 游戏开发服务器只是因为我想要一个漂亮的服务器 GUI,但我开始意识到这同样容易做到摇摆...
周末我做了一个类似的项目,我使用这个链接将所有控制台数据转发到一个文本框。您可以使用任何类似的控件并稍作调整。
public class TextBoxStreamWriter : TextWriter
{
TextBox _output = null;
public TextBoxStreamWriter(TextBox output)
{
_output = output;
}
public override void Write(char value)
{
base.Write(value);
_output.AppendText(value.ToString()); // When character data is written, append it to the text box.
}
public override Encoding Encoding
{
get { return System.Text.Encoding.UTF8; }
}
}
所有的 Write(...) 和 WriteLine(...) 都流向 Write(char),因此这是您需要覆盖的唯一方法。
我的示例要求表单还具有公共 TextBox 属性,该属性在表单内公开私有 TextBox。
TextWriter consoleRedirect = new Tools.TextBoxStreamWriter(consoleForm.TxtOuputDisplay);
Console.SetOut(consoleRedirect);
好吧,在我看到之前的评论之前,我已经写了这个。但既然我花了时间,我还是会发布它。
public void WriteLog(TextBox tb ,string log)
{
tb.AppendText(log + "\n");
}
private void button1_Click(object sender, EventArgs e)
{
WriteLog(textBox1, "[App]: This is a log string");
WriteLog(textBox1, "[App]: Another log string");
WriteLog(textBox1, "[App]: Yet another etc etc.");
}
其中 textBox1 是具有黑色背景和蓝色前景文本的多行文本框。上面的评论是一个更优雅的解决方案,但如果你想要快速简单的东西,这会让你得到帮助。我没有足够的代表来内联发布图像,但这就是它的样子。http://imageshack.us/photo/my-images/198/logwindow.jpg/