| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разработка Windows Forms > Посоветуйте контрол |
| Автор: albert21 13.6.2011, 11:13 |
| Всем привет. Нужен бесплатный контрол, который может отображать форматируемый текст. Что-то типа многострочного Label, строки которого могут быть написаны разным шрифтом, цветом, размером и т.д. Подскажите пожалуйста, если знаете такого типа контрол. |
| Автор: jonie 13.6.2011, 11:51 |
| RichTextBox [http://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox.aspx] ? |
| Автор: albert21 13.6.2011, 12:38 |
| Спасибо за совет. Попробовал RichTextBox и сразу наткнулся на ряд проблем, связанных с излишней (для моей задачи) функциональностью данного контрола, а именно: 1) пока не удалось избавиться от мигающего символа каретки (палочка в точке ввода текста). Может кто знает как избавиться? 2) пока не удалось запретить выделение выведенного текста. Может кто знает как запретить? |
| Автор: albert21 13.6.2011, 18:23 |
| Есть вариант использовать контрол WebBrowser. Присваивать webBrowser.DocumentText сформированный текст html документа. Но этот самфй текст html документа может быть довольно большим и часто изменяющимся. А это может сказаться на производительности |
| Автор: albert21 15.6.2011, 20:44 | ||||||
Пробую... Это класс в котором ловятся сообщения
Форма на которой располагается RichTextBox
В Win32 API я не шарю. Пробовал ловить сообщение EN_SETFOCUS , но оно не ловится. Наверное такое совсем не поступает в RichTextBox. Ловится WM_SETFOCUS, но видимо при этом каретка исчезает лишь на тот момент времени, в который пришло это сообщение. При том варианте, который я привёл, каретка исчезает если навести мышку на RichTextBox. При этом с момента запуска до момента наведения мыши каретка продолжает мигать. также она появляется в момент нажатия левой кнопки мыши. Подскажите пожалуйста что я делаю не так? Может не те сообщения ловлю? Необходимо чтобы каретка вообще не отображалась. |
| Автор: dextermd 17.6.2011, 17:52 | ||||
Обе проблемы решаются достаточно просто. Для начала устанавливаем два параметра для RichTextBox: ReadOnly = true и TabStop = false, затем ловим событие MouseDown и переключаем фокус на другой контрол (например label). Ниже приведен полный код программы:
|
| Автор: albert21 17.6.2011, 21:19 |
| Спасибо, dextermd |