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

Posted

技术标签:

【中文标题】在文本框的任何文本的末尾设置光标[重复]【英文标题】:Setting cursor at the end of any text of a textbox [duplicate] 【发布时间】:2013-12-23 18:19:44 【问题描述】:

我有一个文本框,其中已经显示了字符串。 将光标带到我已经在做的文本框

txtbox.Focus();

但是如何让光标在文本框中的字符串末尾?

【问题讨论】:

是WPF还是winforms 希望对您有帮助:***.com/questions/7750505/… 【参考方案1】:

对于 Windows 窗体,您可以使用 txtbox.SelectionStarttxtbox.SelectionLength 属性控制光标位置(和选择)。如果你想设置插入符号结束试试这个:

txtbox.SelectionStart = txtbox.Text.Length;
txtbox.SelectionLength = 0;

对于 WPF,请参阅 this question。

【讨论】:

哪个帖子说不要使用 SelectionStart。 如果我们不将输入光标放在文本框的末尾,我认为我们不需要 -1。 Math.max(0, txtbox.Text.Length -1); // Math.max is the logic if length is 0 @YuchenZhong 是对的,-1 将插入点 before 最后一个字符 (her|e) 而不是 after 它 (@987654328) @)。此外,文本框有一个.TextLength 属性,所以您只需要txtBox.SelectionStart = txtbox.TextLength @PanagiotisKanavos 他链接的帖子是针对 WPF 的,而给出的答案是针对 Windows 窗体的。【参考方案2】:

有多种选择:

txtBox.Focus();
txtBox.SelectionStart = txtBox.Text.Length;

txtBox.Focus();
txtBox.CaretIndex = txtBox.Text.Length;

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

【讨论】:

设置选择,而不是光标位置【参考方案3】:

您可以使用TextBox.CaretIndex 设置插入符号的位置。如果您唯一需要的是将光标设置在末尾,您可以简单地传递字符串的长度,例如:

txtBox.CaretIndex=txtBox.Text.Length;

您需要将插入符号索引设置为长度,而不是长度为 1,因为这会将插入符号放在最后一个字符之前。

【讨论】:

【参考方案4】:

试试下面...它会帮助你...

有时在窗口窗体Focus() 中无法正常工作。所以更好的是你可以使用Select() 来聚焦文本框。

txtbox.Select(); // to Set Focus
txtbox.Select(txtbox.Text.Length, 0); //to set cursor at the end of textbox

【讨论】:

OP 询问光标位置,而不是选择 @PanagiotisKanavos:你能在评论前正确阅读我的帖子吗... 来自文档TextBox.Select Method:在文本框中选择文本范围。虽然您可以通过操作选择来模拟定位,但最好将光标放在你想要它

以上是关于在文本框的任何文本的末尾设置光标[重复]的主要内容,如果未能解决你的问题,请参考以下文章

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

使用文本框的箭头光标

在文本框的焦点上设置光标长度为 14

VBS使文本框的光标位于所有字符后

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

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