【问题标题】:How can i update cursor position? [duplicate]如何更新光标位置? [复制]
【发布时间】:2012-07-03 14:10:47
【问题描述】:

可能重复:
Set cursor in RichTextBox

private void richTextBox1_TextChanged(object sender, EventArgs e)
{
    string text = richTextBox1.Text.ToString();          
    text = text.Replace("a", "අ");
    text = text.Replace("අඅ", "ආ");
    richTextBox1.Text = text.ToString();
}

这是我的代码。在这里得到结果后,光标位置在字母的前面,所以我如何在字母之后更新光标位置?请帮忙........

【问题讨论】:

  • 您可以将 SelectionStart 值设置为大于文本长度的数字。这将自动将光标放在最后一个字符之后。例如this.rechTextBox1.SelectionStart = int.MaxValue;

标签: c# user-interface richtextbox


【解决方案1】:
richTextBox1.Focus();
richTextBox1.SelectionStart = richTextBox1.Text.Length;
richTextBox1.ScrollToCaret();

TextBox.SelectionStart 属性: 获取或设置文本框中所选文本的起始位置。 MSDN

已编辑: 这是另一种选择...如果您使用richTextBox1.AppendText 而不是richTextBox1.Text,它应该会自动将光标放在末尾。

【讨论】:

  • thanxxxxxxx 但是在搜索的光标停止最后一个字符后仍然有问题。请帮忙
  • @user1462819 在上面两行之后写下这个richTextBox1.ScrollToCaret
  • thanxxxxxxxx 我使用了那个方法,但仍然有问题。请帮助。在我使用文本框之前,我使用了这个方法 TextBox1.SelectionStart = textBox1.text.Length;所以它工作正常但是当我使用richtextBox时它仍然不起作用请帮助我............
  • @user1462819 将 focus() 函数放在顶部,然后开始选择...查看我的更新答案
  • thanxxxxxxxxxxxx.我用过这个,richTextBox1.Text = text.ToString();富文本框1.Focus(); richTextBox1.SelectionStart = richTextBox1.Text.Length; richTextBox1.ScrollToCaret();但还是有问题,请帮忙。
【解决方案2】:

执行以下操作:

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

所以你的活动应该是:

private void richTextBox1_TextChanged(object sender, EventArgs e)
{
   string text = richTextBox1.Text;
   text = text.Replace("a", "අ");
   text = text.Replace("අඅ", "ආ");
   text = text.Replace("i", "ඉ");
   richTextBox1.Text = text.ToString();
   richTextBox1.SelectionStart = richTextBox1.Text.Length;
   richTextBox1.Focus();
}

【讨论】:

    【解决方案3】:

    您可以将 SelectionStart 值设置为大于文本长度的数字。这将自动将光标放在最后一个字符之后。例如this.rechTextBox1.SelectionStart = int.MaxValue;

    【讨论】:

      【解决方案4】:

      试试这个:

      private void richTextBox1_TextChanged(object sender, EventArgs e)
      {
          string text = richTextBox1.Text;
          text = text.Replace("a", "අ");
          text = text.Replace("අඅ", "ආ");
          text = text.Replace("i", "ඉ");
          this.richTextBox1.Text = text.ToString();
      
          TextPointer caret = this.richTextBox1.CaretPosition;
          caret = caretPos.DocumentEnd;
          this.richTextBox1.CaretPosition = caret;
      }
      

      希望这会有所帮助!

      【讨论】:

      • 如果这没有帮助,我很抱歉,因为我无法完全理解您的问题。
      猜你喜欢
      • 2011-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-18
      相关资源
      最近更新 更多