Печать c # зарезервированных ключевых слов в цветах - PullRequest
0 голосов
/ 18 февраля 2012

ОК, в моей программе, похожей на блокнот, я хочу напечатать текст в виде кода, поэтому я хочу, чтобы зарезервированные слова были напечатаны синим цветом, а текст был в пределах полей. Есть идеи, как это сделать ??Это то, что у меня есть.

    int charPag = 0;
        int linPag = 0;
        Font rodFont = new Font("Courier New", (float)10.0);

        e.Graphics.MeasureString(stringToPrint, txtMain.Font, e.MarginBounds.Size, StringFormat.GenericTypographic, out charPag, out linPag);
        e.Graphics.DrawString(stringToPrint, txtMain.Font, new SolidBrush(Color.Black), e.MarginBounds, StringFormat.GenericTypographic);
        stringToPrint = stringToPrint.Substring(charPag);

        e.Graphics.DrawLine(Pens.Black, e.MarginBounds.Left, e.MarginBounds.Bottom, e.MarginBounds.Right, e.MarginBounds.Bottom);
        e.Graphics.DrawString(numPag.ToString(), rodFont, Brushes.Black, e.MarginBounds.Right - (numPag.ToString().Length * rodFont.SizeInPoints), e.MarginBounds.Bottom + 5);
        if (stringToPrint.Length > 0)
        {
            e.HasMorePages = true;
            numPag++;
        }

1 Ответ

0 голосов
/ 18 февраля 2012

Создать HashSet, содержащий зарезервированные слова

public HashSet<string> _reservedWords = 
    new HashSet { "if", "else", "class", "..." };

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

Как только вы нашли идентификатор, проверьте, является ли оно зарезервированным ключевым словом или нет

bool reserved = _reservedWords.Contains(word);
...