0

文字列をに挿入しようとしていRichTextBoxます。これはKeyUpイベントフォームRichTextBoxです:

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

問題は、各更新の後、キャレットが挿入されたテキストの前に移動し、最後に保持したいことです。これは、 の長さを変更した場合にのみ発生することに気付きましたst

4

1 に答える 1

0

あなたのコードがエンドユーザーにとってどのように機能するのか、私にはわかりません。制御文字があることをどのように知ることができますか?

簡単な解決策は、キャレットの位置を自分で最後に設定することです。

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 が挿入された位置にキャレットを配置しようとしている場合、rtf プロパティと text プロパティは異なるものであるため、rtf プロパティでは機能ませ

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;
}
于 2012-12-07T21:59:24.850 に答える