我想将Debug的标准输出流重定向到一个文本块中。有没有简单的方法可以做到这一点?谢谢。
添加自定义Tracelistener以输出您想要监听的内容。
这是一个简单的类,它扩展了TraceListener,并在构造函数中获取要更新的TextBox。
class TextBoxTraceListener : TraceListener
{
private TextBox tBox;
public TextBoxTraceListener(TextBox box)
{
this.tBox = box;
}
public override void Write(string msg)
{
//allows tBox to be updated from different thread
tBox.Parent.Invoke(new MethodInvoker(delegate()
{
tBox.AppendText(msg);
}));
}
public override void WriteLine(string msg)
{
Write(msg + "\r\n");
}
}
protected override void OnHandleCreated(EventArgs e)
{
TextBoxTraceListener tbtl = new TextBoxTraceListener(TheTextBox);
Debug.Listeners.Add(tbtl);
Debug.WriteLine("Testing Testing 123");
}
完成。如果你想听取跟踪信息而不是调试输出:
Trace.Listeners.Add(tbtl);
tBox.AppendText(msg)
而不是tBox.Text += msg
。 - Lessan Vaeziclass TextListener : TraceListener
{
private TextBox tBox;
TextListener( TextBox box)
{
this.tBox = box;
}
public override void Write(string msg)
{
if(box== null) return;
box.Text += msg;
}
public override void WriteLine(string msg)
{
if(HandleText == null) return;
Write(msg);
box.Text += "\r\n";
}
}
看起来 WP7 没有解决方案。 我想我必须等待下一个版本。