Отображать индексы и надписи в RichTextBox в C#, версия 2
В следующих примерах показано, как отображать индексы и верхние индексы в RichTextBox.
Это были довольно простые примеры, и Судир Шривастава обнаружил ситуацию, в которой второй не справился: у него проблемы с отображением + и - знаков в индексах и надстроках. В этом примере используется несколько модифицированный подход для обработки этих символов.
Ключ следующий метод MakeRtfSubsSupers.
// Создавать индексы и надстрочные индексы в элементе управления // для следующих символов - и +. Чтобы сделать - или +, // используем / - и / +. private void MakeRtfSubsSupers(RichTextBox rch, string text, Font small_font, int offset) { // Найдите позиции индекса и надстроки. Listsubs = 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 списки и настраивает эти символы, чтобы соответственно сделать индексы и верхние индексы.
Пример текста, показанного на рисунке вверху этого сообщения, демонстрирует символы +, - и / как в нижних индексах, так и в надстроках (и в обычном тексте).