winforms C#将行从richtext1复制粘贴到richtext2

kse8i1jr  于 2023-03-19  发布在  C#
关注(0)|答案(1)|浏览(145)

-将此选定行类型[0]、[2]、[4] Richtext 1复制到剪贴板:

类型1
产品1描述
第2类
产品描述2
三型
产品描述3

-将类型为[0]、[2]、[4]的行粘贴到具有选定类型1、2、3的Richtext 2:

新产品1
新产品2
新产品3
新产品4
新产品5
新产品6
我的代码:工程,但删除所有的富文本2,谢谢帮助.

string[] line = Clipboard.GetText().Split('\n');   // richtext1 copy lines to clipboard
            //string[] line = richTextBox1.Lines;
            //string line1 = richTextBox2.Text;
            string line1 = richTextBox2.SelectedText;

            richTextBox2.Text = line1.Replace("\n", "\n\n").Insert(0, "\n"); // Add new empty line in richtext 
            string[] line2 = richTextBox2.Lines;

            RichTextBox richText = new RichTextBox();

            for (int i = 0; i < line.Length; i++)
            {
                int x = i;

                if ((x % 2) == 0)  // define odd line
                {
                    //string l1 = line[i];
                    
                    richText.Text += "\n" + line[i];
                }
                else
                {
                    richText.Text += "\n" + line2[i];
                }
                richTextBox2.Text = richText.Text;
            }

-在Richtext 2上插入后:(不影响产品4、5、6)

类型1
新产品1
类型2
新产品2
类型3
新产品3
新产品4
新产品5
新产品6

5fjcxozz

5fjcxozz1#

在您的实现中,richTextBox2在每次迭代时重置。

var line = Clipboard.GetText().Split('\n'); 
var selectedText = richTextBox2.SelectedText;
var selectionStart = richTextBox2.SelectionStart;

var textBuilder = new StringBuilder(selectedText);
textBuilder.AppendLine();

for (int i = 0; i < line.Length; i++)
{
    int x = i;

    if ((x % 2) == 0)
    {    
        textBuilder.AppendLine(line[i]);
    }
    else
    {
        textBuilder.AppendLine(line2[i]);
    }
}

richTextBox2.Text = richTextBox2.Text.Substring(0, selectionStart) 
    + textBuilder.ToString() 
    + richTextBox2.Text.Substring(selectionStart + selectedText.Length);

richTextBox2.SelectionStart = selectionStart + textBuilder.Length;

这个应该可以了

相关问题