如何在C#的RichTextBox中复制整行(无视光标位置)
需求描述
- 初始内容:
test 123 - 点击“复制”后预期效果:
test 123 test 123 - 核心要求:无论光标处于当前行的任意位置,都要将整行内容复制到下一行
最初尝试的代码
int selectionStart = richTextBox1.SelectionStart; int lineStart = richTextBox1.GetFirstCharIndexOfCurrentLine(); int lineEnd = richTextBox1.GetFirstCharIndexFromLine(richTextBox1.GetLineFromCharIndex(selectionStart) + 1); if (lineEnd == -1) { // 处理RichTextBox最后一行的情况 lineEnd = richTextBox1.Text.Length; } string selectedLine = richTextBox1.Text.Substring(lineStart, lineEnd - lineStart); // 在当前行后插入复制的行 richTextBox1.Text = richTextBox1.Text.Insert(lineEnd, Environment.NewLine + selectedLine); // 将光标移动到复制行的末尾 richTextBox1.SelectionStart = lineEnd + Environment.NewLine.Length; richTextBox1.ScrollToCaret();
已实现的解决方案代码
int currentLine = EditingArea.GetLineFromCharIndex(EditingArea.SelectionStart); int lineCharIndex = EditingArea.SelectionStart; string[] lines = EditingArea.Lines; string[] newLines = new string[lines.Length + 1]; for (int i = 0; i < newLines.Length; i++) { if (i == currentLine) lineCharIndex += lines[i].Length + 1; if (i > currentLine) { newLines[i] = lines[i - 1]; continue; } newLines[i] = lines[i]; } EditingArea.Lines = newLines; EditingArea.SelectionStart = lineCharIndex;
内容的提问来源于stack exchange,提问作者syesjohnny
相关产品推荐
相关产品推荐

