TextBox.AppendText()不自动滚动

时间:2013-08-15 19:55:21

标签: c# .net textbox

我尝试了以下操作让我的文本框文本自动滚动:

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

  1. 将文本框拖到表单上。
  2. 将文本框更改为多行。
  3. 添加垂直滚动。
  4. 使用AppendText()将文本添加到文本框中。
  5. 尽管尝试了这里提到的解决方案,但文本不会自动滚动:

    How do I automatically scroll to the bottom of a multiline text box?

    可能导致此问题的原因以及如何解决?

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

2 个答案:

答案 0 :(得分:5)

由于表单在构造函数和load事件期间还没有完全准备好,所以我必须使用一个任务让它在准备就绪后滚动:

以下是调用的方法:

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

通过置于load事件中的此任务调用它:

Task task1 = new Task(new Action(scroll));
            task1.Start();

答案 1 :(得分:0)

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

txtBox1.AppendText("somthing");
txtBox1.ScrollToEnd();