Как сравнить два текста richtextbox с помощью C # - PullRequest
0 голосов
/ 22 июля 2011

Я написал логику для сравнения содержимого двух полей xttext, но текст выходной разницы не выделяется в ожидаемом индексе.Это начинается перед ожидаемым индексом.Я привел ниже логику, которую я использовал.

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;

        }
    }

Спасибо, Локеш.

Ответы [ 2 ]

1 голос
/ 15 декабря 2011

Ваш метод в порядке, однако расширенное текстовое поле выбирается только один раз, вам нужно добавить 1.

Сделайте, как показано ниже:

private int CompareRichTextContents (цель RichTextBox, RichTextBox dest) {intсчетчик = 0;string [] targetLines = target.Lines;string [] destLine = dest.Lines;Результат списка = targetLines.Except (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; 
    }

Теперь в событии нажатия кнопки вызовите его столько раз, сколько выбрано.Хотя это требует ненужного времени (пишет, не задумываясь), но каждый раз выбирает следующее.

 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);
        } 
0 голосов
/ 22 июля 2011

ищите переводы строк, которые могут быть проблемой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...