我该如何更新光标位置?

时间:2012-07-03 04:35:44

标签: c# user-interface richtextbox

  

可能重复:
  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();
}

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

4 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

执行以下操作:

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();
}

答案 2 :(得分:1)

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

答案 3 :(得分:0)

试试这个:

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;
}

希望这有帮助!