BraveKnightFSJ Ответов: 2

У меня есть richtextbox на winform. С#


Привет,

У меня есть richtextbox с помещенной на форму в C#. У меня есть проблема с изменением шрифта. вот некоторая предыстория того, что работает.

Я добавил полосу инструментов с кучей кнопок и 2 полями со списком. первое поле со списком заполняется именем всех установленных шрифтов на компьютере. второе поле со списком предназначено для размера шрифта. Я могу добавить маркеры, установить стиль шрифта полужирный, курсив, подчеркивание. Я также могу установить правое, левое и центрирование текста. Все это прекрасно работает.

Проблема, с которой я сталкиваюсь, находится в моем richtextbox, когда я пытаюсь изменить шрифт или размер шрифта. Сначала я выбираю текст, который хочу изменить шрифтом, щелкаю соответствующий шрифт в поле со списком, и шрифт меняется. Затем я нажимаю на выпадающий список для размера, и это работает, как и ожидалось. Вот моя проблема. Теперь, когда я изменил шрифт и размер шрифта. Теперь я выбираю новый раздел текста в rich text и нажимаю на раскрывающийся список шрифта, и весь текст теперь меняется на тот шрифт, который я только что щелкнул. Он полностью игнорирует то, что выбрано. У меня есть 1 строка кода на textchange и выбранный индекс, измененный для обоих полей со списком.

Это должно просто изменить шрифт с помощью sytle, который уже находится в richtextbox, и размер другой текстовой части поля со списком

rtfDirections.SelectionFont = new Font(tcboFonts.Text, (float)Convert.ToDecimal(tcboSize.Text), rtfDirections.SelectionFont.Style);


Что я уже пробовал:

Не знаю, что я должен попытаться сделать, чтобы это сработало так, как я ожидаю.

BraveKnightFSJ

Хорошо.
Первое, что у меня есть rtfdirections.hideselection = false; это чтобы мой выбор не исчез. У меня есть этот набор в конструкторе формы.

Согласно вопросу Билла.
У меня есть 2 элемента управления combo box в toolstrip. У меня есть поле со списком инструмента-полоски для имя шрифта и полосы поля со списком для размеров. Я изменил его так, что шрифт меняется в событии SelectedIndex change. Это позволяет извлечь текущий стиль из поля rich text и установить шрифт на шрифт из файла cbofont.text, а размер-из файла cboSize.text.

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

Я также заметил, что иногда, когда я нажимаю любую кнопку toolstrip, мой текстовый выбор просто исчезает, чего не должно быть. как вы могли видеть сверху, я установил его так, чтобы он не скрывал выделение.

Нет, я не очищал выбор. Я предположил, что при выборе нового текста в поле форматированного текста он просто перепишет то, что было выбрано ранее, и будет использовать новое выделение.

Я поставил точки останова на всех источниках кода и добавил часы к выбранному тексту, и выбранный текст никогда не менялся, если только выбор просто не исчез и не было никаких точек останова.

2 Ответов

Рейтинг:
0

BillWoodruff

Нам нужно знать, какие элементы управления применяют изменения шрифта и размера: являются ли они независимыми ? Является ли акт применения изменений к выделению независимым от выбора шрифта или размера в выпадающих списках ?

Вы следите за предыдущим выбором ? Как же так ?

Когда пользователь закончит вносить изменения в текущий выбор, вы очистите его ?

Поместите точки останова в свой код и изучите выбор после каждого изменения: что вы видите ?


Рейтинг:
0

BraveKnightFSJ

После долгих поисков проблем я обнаружил, что у меня есть 2 проблемы.

Первый. Для привязки данных к источнику данных я, привязан к текстовому полю, а не поля. изменил это и исправил постоянную потерю rtf-кодировки, когда управление теряло контроль над мышью. теперь rtf остается при нажатии кнопки выкл из поля форматированного текста

Второй. При попытке изменить шрифт в разных местах muliple с помощью 2 наборов полей со списком было лучше просто использовать встроенное диалоговое окно шрифта.