在文本框的任何文本的末尾设置光标[重复]
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.SelectionStart
和 txtbox.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:在文本框中选择文本范围。虽然您可以通过操作选择来模拟定位,但最好将光标放在你想要它以上是关于在文本框的任何文本的末尾设置光标[重复]的主要内容,如果未能解决你的问题,请参考以下文章