在 C# 中滚动到单行文本框的末尾

Posted

技术标签:

【中文标题】在 C# 中滚动到单行文本框的末尾【英文标题】:Scroll to the end of a Single-Line Textbox in C# 【发布时间】:2012-06-16 17:01:06 【问题描述】:

关于单行文本框(Multiline属性设置为false),当文本长度超过框的水平大小时,是否可以滚动到行尾?

我尝试了各种适用于多行框的解决方案,但到目前为止都没有奏效。

过去有几个人问过非常相似的问题,但它始终关注多行文本框。我在 SO 上遇到的问题/解决方案如下:

Scroll to bottom of C# TextBox

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

现在我有以下代码(似乎不起作用):

PathText.Text = "";
PathText.AppendText(BrowseDialog.SelectedPath);
PathText.SelectionStart = PathText.TextLength;
PathText.ScrollToCaret();
PathText.Refresh();

PathText 是正在使用的文本框,BrowseDialog 是一个 FileDialog。

非常感谢任何建议。

【问题讨论】:

只是猜测:PathText.SelectionStart = PathText.Text.Length; 你是对的;当我输入问题时,我最初复制了尚未编译的旧代码。感谢您查看它。 【参考方案1】:
textBox1.Select(textBox1.Text.Length, 0);
// call focus 
textBox1.Focus();

textBox1.SelectionStart = textBox1.Text.Length;
textBox1.ScrollToCaret();
textBox1.Focus();

【讨论】:

【参考方案2】:

你可以这样做:

 PathText.Focus();
 PathText.Select(PathText.Text.Length, 0);

【讨论】:

问题显然出在代码的其他地方,但我会继续将其标记为答案,因为 .Focus();根据我从 Google 搜索中找到的之前的问题和其他讨论,这是该过程的关键部分。不过谢谢!

以上是关于在 C# 中滚动到单行文本框的末尾的主要内容,如果未能解决你的问题,请参考以下文章

如何在不丢失setfocus的情况下将光标设置到文本框的末尾?

如何不断滚动到多行文本框中的文本末尾? [复制]

自动滚动到由 backgroundworker 更新的多行文本框的底部

在文本框的任何文本的末尾设置光标[重复]

文本框的水平滚动条[重复]

使用ivx实现文本纵向和横向滚动效果的经验总结