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

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

txtbox.Focus();

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

【问题讨论】:

标签: c# wpf textbox cursor-position


【解决方案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在文本框中选择文本范围。虽然您可以通过操作选择来模拟定位,但最好将光标放在你想要它
    猜你喜欢
    • 1970-01-01
    • 2011-10-25
    • 2012-04-26
    • 1970-01-01
    • 1970-01-01
    • 2021-06-02
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    相关资源
    最近更新 更多