Не редактируемая часть (Rich) TextBox в Windows Forms - PullRequest
1 голос
/ 08 января 2012

В приложении Windows Forms я хотел бы редактировать простой текст (форматирование в настоящее время не требуется), но некоторые части текста остаются недоступными для редактирования. Например. начните с «ABC», к которому пользователь может добавить или добавить дополнительный текст или полностью удалить «ABC», но всегда оставляйте «ABC» как нередактируемый атом.

Моей первой мыслью было использование RichTextBox и добавление поля RTF ({\field...}), но похоже, что RichTextBox не поддерживает поля.

Другим подходом может быть добавление нередактируемого текста в виде рисунка. Однако я не нашел способа надежно предотвратить изменение размера изображения. (Вопрос, заданный здесь ранее: Удалите возможность изменить размер изображения, вставленного в richtextbox, и добавить событие к этому изображению. C # )

Есть ли у вас какие-либо предложения, как заставить это работать, используя поля или изображения? Или любой другой подход к разработке желаемого поведения?

Ответы [ 4 ]

3 голосов
/ 09 января 2012

Используйте свойство SelectionProtected .

0 голосов
/ 30 мая 2012

Мое решение проблемы: вставьте текст в виде изображения, используя IRichEditOle. Таким образом, текст обрабатывается как один символ, и это именно то, что я хотел. http://www.codeproject.com/KB/edit/MyExtRichTextBox.aspx объясняет, как использовать IRichEditOle.

0 голосов
/ 09 января 2012

Не уверен, если вы смотрите, возможно, с использованием стороннего элемента управления, но элемент управления DevExpress Rich Text Editor для WinForms имеет то, что я думаю, вы могли бы искать ...

Защита документов

Наша модель защиты документов основана на спецификации RTF 1.9.1 (разделы защиты паролем только для чтения и исключения исключений) и поэтому совместима с функцией защиты документов Microsoft® Word®.

Чтобы включить / отключить защиту документов, используйте команды ProtectDocumentCommand / UnprotectDocumentCommand. Вам будет предложено ввести пароль.

Если защита документа включена, то содержимое документа не подлежит редактированию, за исключением диапазонов с разрешениями. Они могут быть изменены пользователями с идентификаторами, указанными в свойствах RangePermission.UserName или RangePermission.Group. Для определенного диапазона, который можно редактировать, AuthenticationOptions.UserName должно быть равно значению RangePermission.UserName ИЛИ AuthenticationOptions.Group должно быть равно значению RangePermission.Group. Особый случай - это группа «Все» - диапазоны, помеченные этой группой, доступны для редактирования независимо от имени пользователя или группы, указанных в параметрах аутентификации.

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

0 голосов
/ 08 января 2012

К сожалению, я не думаю, что вы найдете здесь отличный ответ с WinForms. То, что вы на самом деле просите, гораздо ближе к полноценному редактору, чем к небольшому редактору, который RichTextBox должен предоставить (плюс немного отображения).

Если отображение было очень простым, возможно, вы можете обойтись без него, поместив метку рядом с RichTextBox, удалив ее границу и изменив ее фон в соответствии. Я не уверен на 100%, что вы могли бы заставить дисплей казаться меньше или нет (возможно с WPF, хотя).

Здесь вы описываете более сложное поведение с добавлением и удалением. Чтобы заставить это работать, я думаю, что вам может понадобиться создать новый пользовательский элемент управления для редактирования. Это довольно большой шаг в WinForms, и, вероятно, не то, что вы хотите сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...