所以我正在开发一个基本的记事本程序,旨在帮助网页设计师。我有一个可以粘贴到编辑器中的不同代码块的列表,但是我很难将它们粘贴到我想要的地方。基本上,我希望能够在文本编辑器中的两行(或单词之间)中单击,并能够将这些块粘贴到闪烁的光标所在的位置。
这是我当前选择其中一个粘贴选项的代码:
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;
}
}
然而,它不是在光标处粘贴它,而是完全混乱了线条,有时甚至将它从最后一行粘贴到第一行。我完全不知道我做错了什么,并且可以真正使用一些帮助。
答案 0 :(得分:0)
导致问题的是这条线:
cursorPosition = cursorPosition + insertText.Length;
请改为尝试:
richTextBox1.SelectionStart = cursorPosition + insertText.Length -1;
当您更改Text
的{{1}}属性时,选择位置会重置为0。 richTextBox1
是您的局部变量,然后在下一次循环时接受新值。
答案 1 :(得分:0)
我真的无法弄清楚你的代码应该做什么。
我没有使用RichTextBox,但是,如果要在当前位置插入一些文本,只需执行richTextBox1.SelectedText = insertText
。 (请注意,这将替换所选文本,如果有的话。)
您可以使用richTextBox1.SelectionStart
和richTextBox1.SelectionLength
来更改当前位置/选择。