0

这是一个例子

在此处输入图像描述

只是好奇,我是 C# 的新手,但我决定用它来为我的 Java 游戏开发服务器只是因为我想要一个漂亮的服务器 GUI,但我开始意识到这同样容易做到摇摆...

4

2 回答 2

4

周末我做了一个类似的项目,我使用这个链接将所有控制台数据转发到一个文本框。您可以使用任何类似的控件并稍作调整。

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);
于 2013-02-26T03:06:19.273 回答
2

好吧,在我看到之前的评论之前,我已经写了这个。但既然我花了时间,我还是会发布它。

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/

于 2013-02-26T03:30:34.320 回答