Redirecting Console Output to winforms ListBox

后端 未结 2 1083
北恋
北恋 2021-02-04 19:43

I have built a library that dumps most of its debug text using Console.WriteLine();

I am now I am the process of using the library in a Windows Forms Application, and s

2条回答
  •  一个人的身影
    2021-02-04 20:27

    Another, probably cleaner way to do this is to extend TextWriter with your own that logs to wherever you'd like it to.

    Note: I have not tested this.

    public class ListBoxWriter : TextWriter
    {
        private ListBox list;
        private StringBuilder content = new StringBuilder();
    
        public ListBoxWriter(ListBox list)
        {
            this.list = list;
        }
    
        public override void Write(char value)
        {
            base.Write(value);
            content.Append(value);
            if (value == '\n')
            {
                list.Items.Add(content.ToString());
                content = new StringBuilder();
            }
        }
    
        public override Encoding Encoding
        {
            get { return System.Text.Encoding.UTF8; }
        }
    }
    

提交回复
热议问题