加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 将控制台输出绑定到RichEdit

发布时间:2020-12-16 01:38:10 所属栏目:百科 来源:网络整理
导读:这么简单的问题.我有一个带有大量Console.Writeline代码的c#.dll,并且希望能够使用此.dll在表单应用程序中查看该输出.是否有一种相对简单的方法将控制台输出绑定到RichEdit(或其他合适的控件)?或者,我可以在表单中嵌入一个实际的控制台 shell吗?我发现了一
这么简单的问题.我有一个带有大量Console.Writeline代码的c#.dll,并且希望能够使用此.dll在表单应用程序中查看该输出.是否有一种相对简单的方法将控制台输出绑定到RichEdit(或其他合适的控件)?或者,我可以在表单中嵌入一个实际的控制台 shell吗?我发现了一些类似的问题,但在大多数情况下,人们希望能够收到控制台输入,这对我来说没有必要.

谢谢.

解决方法

您可以使用Console.SetOut()重定向输出.这是一个演示该方法的示例表单.删除表单上的RichTextBox和按钮.

public partial class Form1 : Form {
    public Form1() {
        InitializeComponent();
        button1.Click += button1_Click;
        Console.SetOut(new MyLogger(richTextBox1));
    }
    class MyLogger : System.IO.TextWriter {
        private RichTextBox rtb;
        public MyLogger(RichTextBox rtb) { this.rtb = rtb; }
        public override Encoding Encoding { get { return null; } }
        public override void Write(char value) {
            if (value != 'r') rtb.AppendText(new string(value,1));
        }
    }
    private void button1_Click(object sender,EventArgs e) {
        Console.WriteLine(DateTime.Now);
    }
}

我认为它不会很快但是我尝试的时候看起来还不错.您可以通过覆盖更多方法进行优化.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读