代码之家  ›  专栏  ›  技术社区  ›  splintor

当文本框位于非活动选项卡中时,textbox.scrollToEnd不起作用。

  •  3
  • splintor  · 技术社区  · 15 年前

    我们的应用程序启动几个后台进程,并将它们的输出放到文本框中——每个文本框位于TabControl中的一个单独的TabItem中。我希望文本框自动滚动以显示最后一个输出行,因此在向文本框添加输出/错误行的数据处理函数中,我还调用text box.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();
                    }
                }));
        }
    }
    

    这对活动选项卡中的文本框很有用,但是当我切换到另一个选项卡时,我看到它没有向下滚动到末尾。

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

    2 回复  |  直到 15 年前
        1
  •  11
  •   Reydon Ace    14 年前

    设置插入符号索引:

       if (tb != null) 
       { 
           tb.AppendText(e.Data + Environment.NewLine); 
           tb.CaretIndex = tb.Text.Length;
           tb.ScrollToEnd(); 
       } 
    
        2
  •  0
  •   Thomas Levesque    15 年前

    看起来像个虫子…你应该报告 Microsoft Connect