Отображать индексы и надписи в RichTextBox в C#, версия 2

В следующих примерах показано, как отображать индексы и верхние индексы в RichTextBox.

Это были довольно простые примеры, и Судир Шривастава обнаружил ситуацию, в которой второй не справился: у него проблемы с отображением + и - знаков в индексах и надстроках. В этом примере используется несколько модифицированный подход для обработки этих символов.

Ключ следующий метод MakeRtfSubsSupers.

// Создавать индексы и надстрочные индексы в элементе управления
// для следующих символов - и +. Чтобы сделать - или +,
// используем / - и / +.
private void MakeRtfSubsSupers(RichTextBox rch,
    string text, Font small_font, int offset)
{
    // Найдите позиции индекса и надстроки.
    List subs = new List();
    List supers = new List();
    string new_text = "";
    int pos = 0;
    while (pos < text.Length)
    {
        char ch = text[pos];

        // Проверяем специальные символы.
        if ((ch == '/') || (ch == '-') || (ch == '+'))
        {
            // Добавить следующий символ в новый текст.
            pos++;
            new_text += text[pos];

            // Отметьте как индекс или надстрочный индекс, если это необходимо.
            if (ch == '-') subs.Add(new_text.Length - 1);
            if (ch == '+') supers.Add(new_text.Length - 1);
        }
        else new_text += ch;

        // Переместимся к следующему символу.
        pos++;
    }

    // Отформатируем индексы и надстрочные индексы.
    rch.Text = new_text;
    foreach (int position in subs)
    {
        rch.Select(position, 1);
        rch.SelectionCharOffset = -offset;
        rch.SelectionFont = small_font;
    }
    foreach (int position in supers)
    {
        rch.Select(position, 1);
        rch.SelectionCharOffset = offset;
        rch.SelectionFont = small_font;
    }
}

Этот метод проходит через символы в строке. Если он находит символ /, он добавляет следующий символ в новую строку без интерпретации этого символа. Например, чтобы ввести знак + или -, строка должна включать / + или / - соответственно.

Если код обнаруживает знак a, он добавляет следующий символ в новую строку и записывает позицию этого символа в список subs.

Если код находит знак +, он добавляет следующий символ в новую строку и записывает позицию этого символа в список supers.

После завершения обработки строки код перебирает через subs и supers списки и настраивает эти символы, чтобы соответственно сделать индексы и верхние индексы.

Пример текста, показанного на рисунке вверху этого сообщения, демонстрирует символы +, - и / как в нижних индексах, так и в надстроках (и в обычном тексте).

Источник: http://csharphelper.com/blog/2017/10/display-subscripts-superscripts-richtextbox-c-version-2/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector