Xml 如何使用C比较两个richtextbox文本#

Xml 如何使用C比较两个richtextbox文本#,xml,c#-3.0,Xml,C# 3.0,我已经编写了一个逻辑来比较两个ricttext框的内容,但是输出的差异文本没有在预期的索引处突出显示。它先于预期指数开始。我在下面给出了我使用的逻辑 private void CompareRichTextContents(RichTextBox target, RichTextBox dest) { string[] targetLines = target.Lines; string[] destLine = dest.Lines; L

我已经编写了一个逻辑来比较两个ricttext框的内容,但是输出的差异文本没有在预期的索引处突出显示。它先于预期指数开始。我在下面给出了我使用的逻辑

private void CompareRichTextContents(RichTextBox target, RichTextBox dest)
    {
        string[] targetLines = target.Lines;
        string[] destLine = dest.Lines;
        List<string> result=targetLines.Except(destLine).ToList<string>();
        foreach (string str in result)
        {

            int lineIndex=Array.IndexOf(targetLines, str);
            int lineCount=0;
            for (int index = 0; index < lineIndex; index++)
            {
                lineCount+=targetLines[index].Length;
            }
            target.SelectionBackColor = Color.Yellow;
            target.SelectionColor = Color.Black;
            target.SelectionStart = lineCount;
            target.SelectionLength = str.Length;

        }
    }
private void CompareRichTextContents(RichTextBox目标,RichTextBox目标)
{
字符串[]targetLines=target.Lines;
字符串[]目标行=目标行;
列表结果=targetLines.Exception(destLine.ToList();
foreach(结果中的字符串str)
{
int lineIndex=Array.IndexOf(targetLines,str);
int lineCount=0;
对于(int index=0;index
谢谢,
Lokesh。

查找可能存在问题的换行符

查找可能存在问题的换行符

您的方法是正确的,但是rich textbox只选择了一次,您必须添加1

按以下步骤进行:

private int CompareRichTextContents(RichTextBox目标,RichTextBox目标) { int计数器=0; 字符串[]targetLines=target.Lines; 字符串[]目标行=目标行; 列表结果=targetLines.Exception(destLine.ToList(); foreach(结果中的字符串str) {

            int lineIndex = Array.IndexOf(targetLines, str);
            int lineCount = 0;
            for (int index = 0; index < lineIndex; index++)
            {
                lineCount += targetLines[index].Length+1;
            }
            target.SelectionBackColor = Color.Yellow;
            target.SelectionColor = Color.Black;
           // target.Select(lineCount, str.Length);
             target.SelectionStart = lineCount;
             target.SelectionLength = str.Length;
             counter++;

        }
        return counter; 
    }
intlineindex=Array.IndexOf(targetLines,str);
int lineCount=0;
对于(int index=0;index
现在在button click事件中,调用它的次数与选择的次数相同。虽然这是调用不必要的时间(写作时没有考虑太多),但每次都会选择下一次

 private void button1_Click(object sender, EventArgs e)
        {
           int counter= CompareRichTextContents(this.richTextBox1Body, this.richTextBox2Body);
           for (int i = 0; i < counter; i++)
               CompareRichTextContents(this.richTextBox1Body, this.richTextBox2Body);
        } 
private void按钮1\u单击(对象发送者,事件参数e)
{
int counter=CompareRichTextContents(this.richttextbox1body,this.richttextbox2body);
对于(int i=0;i
您的方法是正确的,但是rich textbox只选择了一次,您必须添加1

按以下步骤进行:

private int CompareRichTextContents(RichTextBox目标,RichTextBox目标) { int计数器=0; 字符串[]targetLines=target.Lines; 字符串[]目标行=目标行; 列表结果=targetLines.Exception(destLine.ToList(); foreach(结果中的字符串str) {

            int lineIndex = Array.IndexOf(targetLines, str);
            int lineCount = 0;
            for (int index = 0; index < lineIndex; index++)
            {
                lineCount += targetLines[index].Length+1;
            }
            target.SelectionBackColor = Color.Yellow;
            target.SelectionColor = Color.Black;
           // target.Select(lineCount, str.Length);
             target.SelectionStart = lineCount;
             target.SelectionLength = str.Length;
             counter++;

        }
        return counter; 
    }
intlineindex=Array.IndexOf(targetLines,str);
int lineCount=0;
对于(int index=0;index
现在在button click事件中,调用它的次数与选择的次数相同。虽然这是调用不必要的时间(写作时没有考虑太多),但每次都会选择下一次

 private void button1_Click(object sender, EventArgs e)
        {
           int counter= CompareRichTextContents(this.richTextBox1Body, this.richTextBox2Body);
           for (int i = 0; i < counter; i++)
               CompareRichTextContents(this.richTextBox1Body, this.richTextBox2Body);
        } 
private void按钮1\u单击(对象发送者,事件参数e)
{
int counter=CompareRichTextContents(this.richttextbox1body,this.richttextbox2body);
对于(int i=0;i
它到底突出显示哪一行?例如,我有以下几行目标零件:DestPart应该从维度突出显示该行,但它从上一行的“/>”开始突出显示它到底突出显示哪一行?例如,我有以下几行目标部分:DestPart应该从维度突出显示该行,但它从上一行的“/>”开始。我希望richtext行中的所有内容都读取为字符串,并且当该行转换为字符数组时,其长度相同。我不明白你在这部分中所说的换行是什么意思。如果是,请告诉我如何查找换行。请尝试lineCount+=targetLines[index]。Length+2;我希望richtext行中的所有内容都被读取为字符串,并且当该行转换为char数组时,其长度是相同的。我不明白你在这部分中所说的换行是什么意思。如果是,请告诉我如何查找换行。请尝试lineCount+=targetLines[index]。Length+2;