我们的应用程序启动了几个后台进程,并将它们的输出放入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非常有用,但是当我切换到另一个选项卡时,我发现它没有滚动到最后。
这是一个已知问题吗?有办法解决吗?
答案 0 :(得分:11)
设置CaretIndex:
if (tb != null)
{
tb.AppendText(e.Data + Environment.NewLine);
tb.CaretIndex = tb.Text.Length;
tb.ScrollToEnd();
}
答案 1 :(得分:0)
看起来像个错误......你应该在Microsoft Connect
上报告