0

そのため、Web デザイナーに役立つように設計された基本的なメモ帳プログラムに取り組んでいます。エディターに貼り付けることができるさまざまなコード ブロックのリストがありますが、希望どおりに貼り付けることができません。基本的に、テキスト エディターで 2 行 (または単語など) の間をクリックして、点滅するカーソルがある場所にこれらのブロックを貼り付けられるようにしたいと考えています。

貼り付けオプションの1つが選択されたときの現在のコードは次のとおりです。

public void getCodeBlock(string selection)
{
    string[] codeBlocks = System.IO.File.ReadAllLines(@"blocks\" + selection + ".txt");
    foreach (string codeBlock in codeBlocks)
    {
        int cursorPosition = richTextBox1.SelectionStart;
        string insertText = codeBlock + Environment.NewLine;
        richTextBox1.Text = richTextBox1.Text.Insert(cursorPosition, insertText);
        cursorPosition = cursorPosition + insertText.Length;
    }
}

ただし、カーソル位置に貼り付けるのではなく、完全に行をごちゃ混ぜにして、最終行から最初の行に貼り付けることさえあります。私は自分が何を間違っているのかまったくわかりません。実際に助けを借りることができます。

4

2 に答える 2

0

問題を引き起こしているのは次の行です。

cursorPosition = cursorPosition + insertText.Length;

代わりにこれを試してください:

richTextBox1.SelectionStart = cursorPosition + insertText.Length -1;

Textのプロパティを変更すると、選択位置が 0 にリセットされますrichTextBox1cursorPosition次回のループで新しい値を取るローカル変数です。

于 2012-02-11T07:40:01.543 に答える
0

あなたのコードが何をするべきなのか、私には本当にわかりません。

私は RichTextBox をあまり使っていませんが、現在の位置にテキストを挿入したい場合は、richTextBox1.SelectedText = insertText. (これにより、選択したテキストがあれば置き換えられることに注意してください。)

とを使用richTextBox1.SelectionStartrichTextBox1.SelectionLengthて、現在の位置/選択を変更できます。

于 2012-02-11T07:40:05.107 に答える