当TextBox处于非活动选项卡时,TextBox.ScrollToEnd不起作用

时间:2009-12-13 00:41:59

标签: wpf textbox scroll

我们的应用程序启动了几个后台进程,并将它们的输出放入TextBoxes - 每个都在TabControl中的一个单独的TabItem中。我希望TextBoxes自动滚动显示最后一个输出行,所以在将输出/错误行添加到文本框的数据处理函数中,我也调用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非常有用,但是当我切换到另一个选项卡时,我发现它没有滚动到最后。

这是一个已知问题吗?有办法解决吗?

2 个答案:

答案 0 :(得分:11)

设置CaretIndex:

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

答案 1 :(得分:0)

看起来像个错误......你应该在Microsoft Connect

上报告