You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 23:20:00