So pretty straightforward question. I have a c# .dll with a whole lot of Console.Writeline code and would like to be able to view that output in a forms application using th
You can use Console.SetOut() to redirect the output. Here's a sample form that demonstrates the approach. Drop a RichTextBox and a button on the form.
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);
}
}
I assume it won't be very fast but looked okay when I tried it. You could optimize by overriding more methods.