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

时间:2012-02-11 07:23:08

标签: c# textbox cursor pasting

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

这是我当前选择其中一个粘贴选项的代码:

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

然而,它不是在光标处粘贴它,而是完全混乱了线条,有时甚至将它从最后一行粘贴到第一行。我完全不知道我做错了什么,并且可以真正使用一些帮助。

2 个答案:

答案 0 :(得分:0)

导致问题的是这条线:

cursorPosition = cursorPosition + insertText.Length;

请改为尝试:

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

当您更改Text的{​​{1}}属性时,选择位置会重置为0。 richTextBox1是您的局部变量,然后在下一次循环时接受新值。

答案 1 :(得分:0)

我真的无法弄清楚你的代码应该做什么。

我没有使用RichTextBox,但是,如果要在当前位置插入一些文本,只需执行richTextBox1.SelectedText = insertText。 (请注意,这将替换所选文本,如果有的话。)

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