2009-12-13 133 views
3

我們的應用程序啓動多個後臺進程並將其輸出放入TextBoxes中 - 每次都在TabControl中的單獨TabItem中。我想文本框自動滾動顯示最後輸出線,因此,增加了輸出/錯誤行到文本框的數據處理功能,我還呼籲TextBox.ScrollToEnd():當TextBox處於非活動選項卡時,TextBox.ScrollToEnd不起作用

void OnServerProcessOutputDataReceived(object sender, DataReceivedEventArgs e) 
{ 
    if (e.Data != null) 
    { 
     Dispatcher.Invoke(new Action(() => 
      { 
       TextBox tb = getServerProcessOutputTextBox(sender); 
       if (tb != null) 
       { 
        tb.AppendText(e.Data + Environment.NewLine); 
        tb.ScrollToEnd(); 
       } 
      })); 
    } 
} 

該作品非常適合活動選項卡中的TextBox,但是當切換到另一個選項卡時,我發現它並沒有滾動到最後。

這是一個已知的問題?有沒有辦法解決它?

+0

這裏是如何做到這一點的答案: http://stackoverflow.com/questions/4055720 /滾動到單行結束的wpf-textbox – 2013-07-07 13:51:58

回答

10

設置caretIndex舉報:

if (tb != null) 
    { 
     tb.AppendText(e.Data + Environment.NewLine); 
     tb.CaretIndex = tb.Text.Length; 
     tb.ScrollToEnd(); 
    } 
+3

除非TextBox有焦點:tb.Focus(),否則此解決方案對我無效。 – Fueled 2012-01-09 14:34:56

相關問題