插入rtf字符串时RichTextBox插入位置

时间:2012-12-07 20:37:13

标签: c# winforms richtextbox rtf caret

我正在尝试将字符串插入RichTextBox。这是KeyUp事件形式RichTextBox

private void richTextBox1_KeyUp(object sender, KeyEventArgs e)
{
    string st = richTextBox1.Rtf;
    st=st.Insert(750, "void");
    richTextBox1.Rtf = st;
}

问题在于,每次更新后,插入符号都会在插入的文本之前移动,我希望将其保留在最后。我注意到只有当我修改st的长度时才会发生这种情况。

1 个答案:

答案 0 :(得分:0)

我无法理解您的代码应该如何为最终用户工作。你怎么会知道在索引750你有文本与控制字符?

快速解决方案是自己将插入位置设置到最终:

private void richTextBox1_KeyUp(object sender, KeyEventArgs e)
{
    string st = richTextBox1.Rtf;
    st=st.Insert(750, "void");
    richTextBox1.Rtf = st;
    richTextBox1.SelectionStart = richTextBox1.TextLength;
}

当然,如果您尝试将插入符号放在插入void的位置,那么对于属性,这将不起作用,因为和文本属性是不同的。

如果尝试在text属性中插入文本,那么它看起来像这样:

private void richTextBox1_KeyUp(object sender, KeyEventArgs e)
{
    string st = richTextBox1.Text;
    st=st.Insert(750, "void");
    richTextBox1.Text = st;
    richTextBox1.SelectionStart = 750 + 4;
}