C# 输出System.Diagnostics.Debug日志到TextBox

这一步关键是要把debug的内容提炼出来,这一步比较麻烦的地方在于这个时间点很难做,不能通过事件句柄的方式去触发,所以需要重新继承一下System.Diagnostics.StringWriter。(关于System.Diagnostics.Debug.Listeners和System.Diagnostics.TextWriterTraceListener的关系及StringWriter的用法可以参考官方文档)

继承完(带参数改造)的类如下:

        class MyStringWriter : StringWriter
        {
            StringBuilder sb;
            TextBox tb;

            public MyStringWriter(TextBox tb,StringBuilder sb):base(sb)
            {
                this.sb = sb;
                this.tb = tb;
            }

            public override void Write(char[] buffer, int index, int count)
            {
                base.Write(buffer, index, count);
                tb.Text = sb.ToString();
            }
        }

关于这个类的用法如下:

            StringBuilder sb = new StringBuilder(tb_log.Text);
            MyStringWriter sw = new MyStringWriter(tb_log,sb);
            System.Diagnostics.TextWriterTraceListener t = new System.Diagnostics.TextWriterTraceListener(sw);
            System.Diagnostics.Debug.Listeners.Add(t);

这次的代码非常啰嗦,初始化需要整整4行代码,原因主要在TextWriterTraceListener的源码不知道是怎么构造的,有时间摸索一下争取下次把他缩短至两行左右吧

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值