0

所以我正在开发一个基本的记事本程序,旨在帮助网页设计师。我有一个可以粘贴到编辑器中的不同代码块的列表,但是我无法按照我想要的方式粘贴它们。基本上,我希望能够在文本编辑器上的两行(或单词,任何地方)之间单击,并能够将这些块粘贴到闪烁光标所在的位置。

这是我当前选择粘贴选项之一时的代码:

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 回答