C# 在文本框中的光标处粘贴文本行

C# 在文本框中的光标处粘贴文本行,c#,textbox,cursor,pasting,C#,Textbox,Cursor,Pasting,所以我正在开发一个基本的记事本程序,旨在帮助网页设计师。我有一个可以粘贴到编辑器中的不同代码块的列表,但是我很难按照自己的意愿粘贴它们。基本上,我希望能够在文本编辑器上的两行(或单词,任何地方)之间单击,并能够将这些块粘贴到闪烁光标所在的位置 以下是选择其中一个粘贴选项时的当前代码: public void getCodeBlock(string selection) { string[] codeBlocks = System.IO.File.ReadAllLines(@"blocks

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

以下是选择其中一个粘贴选项时的当前代码:

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

但是,它不是在光标处粘贴,而是将行完全混淆,有时甚至从最后一行粘贴到第一行。我完全不知道我做错了什么,我真的需要一些帮助。

正是这一行造成了问题:

cursorPosition = cursorPosition + insertText.Length;
请尝试以下方法:

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

更改
richTextBox1
Text
属性时,选择位置将重置为0
cursorPosition
是您的局部变量,它在下一次循环中接受新值。

我真的不知道您的代码应该做什么

我对RichTextBox没有太多的了解,但是如果您想在当前位置插入一些文本,只需执行
RichTextBox 1.SelectedText=insertText
。(请注意,这将替换所选文本(如果有)


您可以使用
richTextBox1.SelectionStart
richTextBox1.SelectionLength
更改当前位置/选择。

绝对完美!我不知道当有变化时,它被重置为0,不过现在有意义了。