Я занимаюсь написанием небольшого текстового редактора, который должен иметь очень простые возможности форматирования, ничего необычного, но более сложного, чем то, что может предоставить RichTextBox (включая страницу «функциональность дисплея».Отображение, выбор и редактирование текста в UserControl
Однако в прошлый раз, когда я писал текстовые редакторы, был с WinAPI в C для Windows 3.1. Я не знаю, как это сделать с .NET. Дальше я получил, пока пробел не использует TextRenderer.DrawText(), чтобы выводить текст, который у меня есть в прямоугольник ... но что-то говорит мне, что в этом случае не так, потому что я все время думал об этом во-первых, мне понадобится фоновый текст в формате XML ... и пока я могу разбить абзацы с тегами, я не знаю, как сделать форматирование, например, или другое семейство шрифтов, поэтому, вероятно, это должно быть подошел немного по-другому. Наверное, каждое слово отдельно. Должен ли я хранить каждое слово в массиве (с учетом тэгов xml) и рисовать его как отдельный элемент управления, сохраняя свои позиции в массиве? Это звучит как огромная память и сила рисования, если мы говорим о сотнях тысяч слов в одном файле (это возможность, хотя я очень сомневаюсь, что один файл будет содержать более 20000 слов, однако все возможно и вместе со словом (форматирование доступно только для полных слов, поэтому не беспокойтесь об этом), он может сильно увеличиться при использовании памяти, что я, скорее всего, не хочу делать.
Итак ... что я ищу это несколько советов и подсказок (я не могу использовать текстовый редактор Tx, DevExpress или RichTextEditors от Telerik по хорошей причине плюс их цену). Самый правильный способ создания «текстового процессора», который хорошо расширяется с помощью C# .NET, как это единственное, что мне до сих пор никогда не приходилось вставлять в нос.
Bas Иной:
1) Лучший способ нарисовать текст в пользовательский элемент управления. Как мне сохранить текст? Я, вероятно, буду использовать базовое свойство Text для этапа предварительного форматирования при загрузке файлов. Или, может быть, я расширю его с помощью своего собственного класса XML? Должен ли я держать слова в правильном положении и присоединяться к ним вручную, когда используется backspace? Etc и т. Д.
2) Лучший способ сделать выбор (возможно, только один способ, который я предполагаю?), В то время как в WinAPI я мог просто определить персонажа под курсором, поскольку это был стандартный текст, учитывая количество шрифтов и путь к окнам рисует символы, которые я либо должен был бы распознать, а затем начать вычислять позицию ... поэтому я предполагаю, что есть лучший способ выбрать текст?
3) Редактирование текста, который я бы предположил, прост, если у меня есть позиция курсора.
Приветствия для чтения и ... надеюсь, кто-то придумает лучшее решение, чем мой слабый DrawText, который ... на самом деле не является решением.