SelectionColor применяется в некоторых случаях, а не в других - PullRequest
0 голосов
/ 11 июля 2019

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

Этот метод работает с одним файлом, работает с 2 файлами, но все, что больше, приведет к тому, что некоторые средние строки не получат цвет правильно.Я новичок в C # и не уверен, что есть какой-то нюанс, который мне не хватает.

Надеюсь, что приведенного ниже достаточно, чтобы помочь, но, по сути, результат в пользовательском интерфейсе состоит в том, что первый файл зеленый, второй зеленый, несмотря на ошибку, и запись в журнал показывает, что он должен быть красным, а последнийфайл правильно отображается красным цветом.

Вот код:

private void updateFileList(string fileName, string newFileName, Color color)
    {

        string matchString = Regex.Escape(fileName);
        Console.WriteLine(matchString);
        Console.WriteLine(color);
        foreach (Match match in Regex.Matches(tbFileList.Text, matchString))
        {
            Console.WriteLine("MATCH: " + match);
            tbFileList.Text = tbFileList.Text.Replace(fileName, newFileName);
            tbFileList.SelectionStart = match.Index;
            Console.WriteLine("INDEX: " + match.Index.ToString());
            tbFileList.SelectionLength = newFileName.Length;
            Console.WriteLine("LENGTH: " + newFileName.Length.ToString());
            Console.WriteLine("SELECTED TEXT: " + tbFileList.SelectedText);
            tbFileList.SelectionColor = color;
            Console.WriteLine("SELECTION COLOR: " + tbFileList.SelectionColor);

        };
    }

А вот и результат Console.WriteLine операторов:

===================
A:\\FileName1\.txt
Color [Green]
MATCH: A:\FileName1.txt
INDEX: 0
LENGTH: 102
SELECTED TEXT: A:\FileName1.txt | Success!
SELECTION COLOR: Color [Green]
===================
A:\\FileName2\.txt
Color [Red]
MATCH: A:\FileName2.txt
INDEX: 103
LENGTH: 164
SELECTED TEXT: A:\FileName2.txt | ERROR.
SELECTION COLOR: Color [Red]
===================
A:\\Filename3\.txt
Color [Red]
MATCH: A:\Filename3.txt
INDEX: 268
LENGTH: 147
SELECTED TEXT: A:\Filename3.txt | ERROR.
SELECTION COLOR: Color [Red]

NOTE

Я изменил имена файлов, поэтому индекс / длина могут не иметь смысла, если вы сравниваете их с именем файла.Похоже, они выстраиваются последовательно, поэтому я вполне уверен, что он не захватывает неправильную часть текста или что-то в этом роде.

Вызов метода, описанного выше, так:

updateFileList(fileName, newFileName, Color.Red);

РЕДАКТИРОВАТЬ

Изменено вместо этого без изменений:

string newText = tbFileList.Text.Replace(fileName, newFileName);
tbFileList.Text = newText;

РЕДАКТИРОВАТЬ 2

Я также пыталсяэто:

string newText = tbFileList.Text;
tbFileList.Text = newText.Replace(fileName, newFileName);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...