![]() |
|
Модераторы: gambit, Partizan |
![]()
|
|
| yngwie19 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
Здравствуйте подскажите. Я наследую класс RichTextBox:
Можно ли переопределить событие LocationChanged ? или оно закрыто |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 16 Всего: 142 |
Переопределить можно метод, в котором оно инициируется
OnLocationChanged -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| yngwie19 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
diadiavova, Спасибо. Мне Вот что нужно сделать. На форме есть группа RichTextBox -ов. Мне нужно чтобы вокруг каждого ровно по его периметру был нарисован прямоугольник (DrawRectangle). Можно ли в моем наследуемом классе SRCell сделать так чтобы при создании такого ричтекстбокса приросовывалась такая рамка ?
P.s: Я создаю ричтекстбоксы через класс SRCell, который унаследован от RithTextBox |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 16 Всего: 142 |
Можно. Как-нибудь так
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| yngwie19 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
diadiavova, Спасибо тебе большое. У меня еще есть один вопрос:
1) Почему нужно обрабатывать ParentChanged? Объясни пожалуйста как работает этот механизм. Я так понимаю, когда мы срабатывает ParentChanged, то на форме рисуется это?:
Это сообщение отредактировал(а) yngwie19 - 23.8.2009, 21:31 |
|||
|
||||
| diadiavova |
|
||||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 16 Всего: 142 |
Не совсем. Если ты хочешь что-то нарисовать в родительском контейнере(на форме к примеру), то тебе надо обработать событие Paint этого контейнера. Но проблема в том, что твой ричтекстбокс в момент создания не расположен ни в каком контейнере, мало того, за время своего существования он может несколько раз сменить родителя. Так вот для того, чтобы прорисовка производилась именно в том контейнере, в котором он находится надо при помещении его в контейнер подписаться на событие Paint этого контейнера(и не раньше). И кстати на случай если контейнер будет меняться надо код сильно поменять. В этом случае тебе придётся предусмотреть, что при смене контейнера сам контейнер должен быть перерисован, в предыдущем родителе ничего прорисовываться не должно, так что от обработки прорисовки в бывших контейнерах надо вовремя отписываться и перерисовывать их тоже. То есть код должен выглядеть примерно так
От всего этого геморроя можно избавиться если разместить ричтекстбокс в собственный контейнер. То есть создать свой юзерконтрол с ричтекстбоксом внутри. Добавлено через 4 минуты и 25 секунд Вот тут пример, где этот ричтекстбокс по нажатию кнопки меняет родителя и всё прорисовывается нормально. Присоединённый файл ( Кол-во скачиваний: 6 )
FramedRTB.rar 57,14 Kb-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
||||
|
|||||
| yngwie19 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
diadiavova, очень интересно, Но Я думаю что вой ричэдит все время будет на форме и не будет менять родителя. В таком случае нужен этот участок кода?
Скажи пожалуйста, т.е событие ParentChanged происходит тогда, когда контрол меняет своего родителя и соответственно когда только создается? |
|||
|
||||
| yngwie19 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
кстати как мне задать нужный размер шрифта для моего RichTextBox?, при установке
ошибка :
или это свойство только get? Как тогда задать нужный размер? |
||||
|
|||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 16 Всего: 142 |
Да. И в это время надо подписаться на событие Paint родителя. А процитированный код нужен на случай если ртб поменяет родителя, чтобы в предыдущем родителе не продолжала прорисовываться рамка. Это сообщение отредактировал(а) diadiavova - 24.8.2009, 11:25 -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| yngwie19 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
diadiavova, понял, спасибо, не подскажешь по поводу шрифта?
|
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 16 Всего: 142 |
Не заметил сразу вопрос. Шрифт надо целиком новый назначать. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| yngwie19 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
diadiavova, спасибо большое за этот обработчик:
Но у меня есть некоторые трудности (надеюсь их можно решить). Вообщем Я создаю много таких RichTextBox - ов, и получается когда Я прокручиваю скрол формы вверх и вниз, они(созданные ричтекстбоксы, обведенные прямоугольниками) медленно перерисовываются и таким образом создается "рябь", можно ли как- нибудь избавится от этого ? |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 16 Всего: 142 |
Обычно от мелькания двойная буферизация спасает(свойство DoubleBuffered контейнера в котором всё рисуется). Однако я ещё раз повторюсь, что в подобных ситациях лучше использовать контейнеры для контролов. То есть: создаёшь свой юзерконтрол вставляешь туда ричтекстбокс док=филл, можно поля настроить любые, бэкколор для контейнера и всё нормуль. А если ещё тебе надо и растягивать боксы в рантайме(как ты в других топиках спрашивал), то тем более.
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| yngwie19 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
diadiavova, если тебе не трудно, набросай пожалуйста простенький пример как это выглядеть должно:
P.S: Спасибо тебе большое за помошь. |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 16 Всего: 142 |
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Разработка Windows Forms | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |