![]() |
Модераторы: gambit, Partizan |
![]() ![]() ![]() |
|
jcage |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 10.2.2009 Репутация: нет Всего: нет |
Нужно с RichTextBox сделать следующее:
1. Сделать нередактируемый текст 2. Сделать что бы курсор мыши не отображался 3. Сделать так, что RichTextBox изменял свою высоту в зависимости от содержимого. Т.е. что бы VScrollBars никогда не появлялись. 4. Сделать так что бы при скроллинге скролился не сам box, а его parent. Все это корректно работает, если Enabled = false; но тогда элемент становиться серым, а мне нужен элемент нормального цвета, но отвечающий требованиям выше. P.S. когда Enabled = false изменение цвета фона и цвета шрифта элемента ни к чему не приводят. |
|||
|
||||
Лен |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 20.1.2009 Репутация: нет Всего: нет |
1) ReadOnly = true;
2) текст и так после (1) нередактируемый, но можно ещё и Cursor.Hide(); для надёжности вызвать 3) ScrollBars = None; + обработчик TextChanged для установки размера 4) обработчики на HScroll / VScroll. Enabled оставь true, хватит и изменения ReadOnly. |
|||
|
||||
jcage |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 10.2.2009 Репутация: нет Всего: нет |
Спасибо за ответ.
Есть ньансы. 1) ReadOnly = true; - после этого текст можно выделять. 2) текст и так после (1) нередактируемый, но можно ещё и Cursor.Hide(); для надёжности вызвать Полностью пропадает сам курсор мыши. А я хочу, что бы курсор был обычной стрелкой, а "|" в поле RichTextBox не отображалась. 3) ScrollBars = None; + обработчик TextChanged для установки размера Тут тоже проблема. С TextChanged понятно, но как получить высоту текста RTF не понятно - текст может быть разных шрифтов, содержать картинки, списки, быть жирным и т.д. 4) обработчики на HScroll / VScroll. А поподробнее можно? Как передать родителю, что произошел scroll и его надо обработать? Enabled оставь true, хватит и изменения ReadOnly. |
|||
|
||||
Лен |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 20.1.2009 Репутация: нет Всего: нет |
1) Придётся на SelectionChanged вешать обработчик типа
А можно и совсем уж извращенским методом пойти: положи поверх RichTextBox-а какой-нить контрол, и поставь ему прозрачность 100%. 2) Если так, то тебе просто нужно в дизайнере сделать Cursor = Default (вместо стандартного IBeam). 3) Высоту текста ручками придётся высчитывать, посмотри методы для определения габаритов текста в System.Drawing. Подробно не скажу - в C# я такие не юзал, в Делфях помнится были Canvas.TextWidth() и Canvas.TextHeight(). 4) Напиши обработчики событий HScroll / VScroll RichTextBox-а, а что в них писать - зависит от parent-контрола, на котором лежит RichTextBox. |
|||
|
||||
jcage |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 10.2.2009 Репутация: нет Всего: нет |
[qoute]
1) Придётся на SelectionChanged вешать обработчик типа
А можно и совсем уж извращенским методом пойти: положи поверх RichTextBox-а какой-нить контрол, и поставь ему прозрачность 100%. [/qoute] Ну неужели нельзя сделать так что бы этот контрол впринципе не редактировался? Т.е. вел себя так же как Enabled=false, только с нормальными цветами? 3) Высоту текста ручками придётся высчитывать, посмотри методы для определения габаритов текста в System.Drawing. Подробно не скажу - в C# я такие не юзал, в Делфях помнится были Canvas.TextWidth() и Canvas.TextHeight(). Для RTF ничего не нашел. Для текста есть. (( 4) Напиши обработчики событий HScroll / VScroll RichTextBox-а, а что в них писать - зависит от parent-контрола, на котором лежит RichTextBox. На форме лежит мой контрол. Не могу найти метод, который scroll вызовет( |
|||
|
||||
Лен |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 20.1.2009 Репутация: нет Всего: нет |
1) По ходу нельзя.
3) Так и считай для текста. =) Можешь "на глаз" выводить - навряд ли тебе нужны строгие аццкие формулы для абсолютно точного вывода RTF. 4) Беглым взглядом не видно... А если попробовать Win32API-шным SendMessage()? |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Разработка Windows Forms | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |