2012-06-08 56 views

回答

0

看來WP7沒有解決方案。 我想我必須等待下一個版本。

3

將TextWriterListener(http://msdn.microsoft.com/en-us/library/system.diagnostics.textwritertracelistener.aspx)添加到您的調試&讓偵聽器使用結果流的ReadToEnd()調用將其內容刷新到文本中。

如果這不可用,您可以實現您自己的偵聽器&將其輸出到您的文本框。像這樣的東西應該做的訣竅,其中持有您的TextBox的表單也實現此TextListener文本框傳遞到偵聽器。

class 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"; 
    } 

} 
+0

Windows Phone 7似乎不支持這些類。 –

+0

@Ashen對不起,我已經更新了答案,以包括可能工作的另一個替代方案 – Chris

+1

Silverlight沒有TraceListeners,所以你的替代方案將無法正常工作。 –

3

添加一個自定義Tracelistener輸出你想聽。

這裏有一個簡單的類延伸的TraceListener,並採取文本框,它是在構造函數中

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.Text += msg; 
     })); 
    } 

    public override void WriteLine(string msg) 
    { 
     Write(msg + "\r\n"); 
    } 
} 

在表單代碼更新初始化TextBoxTraceListener的句柄表後,已創建:

protected override void OnHandleCreated(EventArgs e) 
    { 
     TextBoxTraceListener tbtl = new TextBoxTraceListener(TheTextBox); 
     Debug.Listeners.Add(tbtl); 
     Debug.WriteLine("Testing Testing 123"); 
    } 

完成。如果您想要聽Trace而不是Debug輸出:

Trace.Listeners.Add(tbtl); 
+2

我建議使用'tBox.AppendText(msg)'而不是'tBox.Text + = msg' –

相關問題