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
属性时,选择位置将重置为0cursorPosition
是您的局部变量,它在下一次循环中接受新值。我真的不知道您的代码应该做什么
我对RichTextBox没有太多的了解,但是如果您想在当前位置插入一些文本,只需执行RichTextBox 1.SelectedText=insertText
。(请注意,这将替换所选文本(如果有)
您可以使用
richTextBox1.SelectionStart
和richTextBox1.SelectionLength
更改当前位置/选择。绝对完美!我不知道当有变化时,它被重置为0,不过现在有意义了。