Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Упрощение кода C#

Сказочный принц Знаток (486), на голосовании 7 лет назад
Нашёл в сети небольшой код для подсветки синтаксиса для C#. Но при попытке добавить другие цвета получается полная фигня. В RichTextBox текст начинает выделяться кусками при любом изменении текста.

Regex rex1 = new Regex("...");
...
Regex rex4 = new Regex("...");

MatchCollection mc1 = rex1.Matches(richTextBox1.Text);
...
MatchCollection mc4 = rex4.Matches(richTextBox1.Text);

int StartCursorPosition = richTextBox1.SelectionStart;

foreach (Match m in mc1){...}
...
foreach (Match m in mc4){...}

Все проверки в один foreach можно засунуть?
Голосование за лучший ответ
Капитан Гугл Искусственный Интеллект (146203) 7 лет назад
Зависит от того, что вместо троеточий. А мы, увы, не телепаты.

А вообще можно собрать все переменные с индексами в массивы и запустить по ним цикл.

Кстати, судя по именам переменных, этим кодом лучше не пользоваться...
Сказочный принцЗнаток (486) 7 лет назад
Вместо которых троеточий? В самих циклах?
Капитан Гугл Искусственный Интеллект (146203) Да, и между ними, если там что-то осбенное.
Сказочный принцЗнаток (486) 7 лет назад
foreach (Match m in mc1)
{
int startIndex = m.Index;
int StopIndex = m.Length;

richTextBox1.Select(startIndex, StopIndex);
richTextBox1.SelectionColor = Color.Blue;
richTextBox1.SelectionStart = StartCursorPosition;
richTextBox1.SelectionColor = Color.Black;
}
foreach (Match m in mc2)
{
int startIndex = m.Index;
int StopIndex = m.Length;

richTextBox1.Select(startIndex, StopIndex);
richTextBox1.SelectionColor = Color.Brown;
richTextBox1.SelectionStart = StartCursorPosition;
richTextBox1.SelectionColor = Color.Black;
}
Сказочный принц Знаток (486) Остальное там просто переменные одинаковые пропустил.
Похожие вопросы