5

我尝试了以下方法让我的文本框文本自动滚动:

我正在使用的步骤非常简单:

  1. 将文本框拖到表单上。
  2. 将文本框更改为多行。
  3. 添加垂直滚动。
  4. 使用 AppendText() 将文本添加到文本框。

尽管尝试了此处提到的解决方案,但文本不会自动滚动:

如何自动滚动到多行文本框的底部?

什么可能导致这种情况,我该如何解决?

更新:如果我创建一个按钮并使用它来调用 AppendText() 我会得到所需的行为。但是,如果我尝试从表单的构造函数或 Load() 事件调用 AppendText,那么我会得到附加的文本,但 TextBox 不会滚动。这不是一个重复的问题,因为我过去没有看到任何人发布这个问题。

4

2 回答 2

10

由于表单在构造函数和加载事件期间还没有完全准备好,我不得不使用一个任务让它在它准备好后滚动:

这是被调用的方法:

void scroll()
{
    this.Invoke(new MethodInvoker(delegate()
        {
            textBox1.SelectionStart = textBox1.Text.Length;
            textBox1.ScrollToCaret();
        }));
}

它通过放置在加载事件中的这个任务被调用:

Task task1 = new Task(new Action(scroll));
            task1.Start();
于 2013-08-15T21:44:27.160 回答
2

如果不起作用,您也可以尝试TextBox.ScrollToEnd()功能。ScrollToCaret()

txtBox1.AppendText("somthing");
txtBox1.ScrollToEnd();
于 2018-12-31T10:20:04.137 回答