【问题标题】:Scroll to bottom of C# TextBox [duplicate]滚动到 C# TextBox 的底部 [重复]
【发布时间】:2010-11-16 18:04:10
【问题描述】:

我在 C# 表单应用程序上有一个文本框。我用有关表单的 Load 事件的信息填充 TextBox。然后我调用以下命令:

this.txtLogEntries.SelectionStart = txtLogEntries.Text.Length;
this.txtLogEntries.ScrollToCaret();

但是 TextBox 没有滚动到底部?

这仅适用于 Load 事件。一旦它运行,我还会从应用程序的其他部分更新此 TextBox,一旦这些事件之一更新为 TextBox,它就会滚动到底部。

那么,在表单加载事件中预填充文本框时,如何让它滚动到底部?

【问题讨论】:

标签: c# winforms textbox


【解决方案1】:

尝试将代码放入表单的 Shown 事件中:

private void myForm_Shown(object sender, EventArgs e)
{
  txtLogEntries.SelectionStart = txtLogEntries.Text.Length;
  txtLogEntries.ScrollToCaret();
}

【讨论】:

    【解决方案2】:

    在处理Load 事件(发生在在显示表单之前)时,还没有要显示的表单,因此还没有建立视觉状态。因此,滚动一个不可见的控件很可能不会做任何事情,因为——嘿,没有什么可滚动的,因为滚动视口只是控件上的一个视图,而不是其状态的一部分。

    将滚动部分移动到表单的Shown 事件(发生在表单首次显示之后)可能会更成功

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-31
      • 2014-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多