![]() |
|
Модераторы: gambit, Partizan |
![]()
|
|
| CyraxZ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 10.12.2006 Репутация: нет Всего: нет |
Аналогично рисованию на форме (получаем объект Graphics методом Form.CreateGraphics() и рисуем на нём) получаю объект Graphics для контрола Panel (Panel.CreateGraphics) и рисую на нём... в результате ничего не отображается...
Пробовал и очистку панели методом Clear(произвольный цвет) - никакой реакции... |
|||
|
||||
| emmanuil |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 9.1.2007 Репутация: 1 Всего: 3 |
Попробуй код, все нормально рисует. Возьми новую панельку и примени к ней этот код, должно работать
|
|||
|
||||
| Mag |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 23.6.2005 Репутация: нет Всего: нет |
Тоже такая же проблемка была. По примеру выше создал новую панельку, Работает!
emmanuil, Спасибо. Это сообщение отредактировал(а) Mag - 2.6.2007, 19:13 --------------------
В каждой черной комнате есть выход - всегда есть выход с любой ситуации! |
|||
|
||||
| CyraxZ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 10.12.2006 Репутация: нет Всего: нет |
Чёрт, просмотрел одну деталь...
Рисовал-то я на панельке в событии OnLoad формы, когда ещё панель не была создана... Тут у меня попутно ещё такой вопрос возник: Почему у панели Panel нет событий OnLoad и OnClose, подобно форме ? Мне нужны события, генерируемые после создания панели (пока остановился на событии Layout, хотя это не совсем то) и перед её уничтожением или скрытием... |
|||
|
||||
| emmanuil |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 9.1.2007 Репутация: 1 Всего: 3 |
У панели есть события:
Paint - когда рисует панель, Disposed - когда вызывается метод Dispose, VisibleChanged - когда изменяется свойство Visible. VisibleChanged - происходит два раза при создании формы. В первый раз, еогда панель добавляется на форму(visible = false), а второй уже когда visible = true. А потом Происходит Paint Я думаю тебе подойдет последнее в обоих случаях. Проверяй Visible и выполняй код. |
|||
|
||||
| CyraxZ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 10.12.2006 Репутация: нет Всего: нет |
По поводу Dispose: почему наследуемые события не отображаются в Property Window ?
А что касается VisibleChanged, то это событие (у панели) при формировании формы у меня вызывается 2 раза с Visible = false (почему - непонятно) и 3-й раз - с Visible = true. И не будет ли проблем при использовании этого события, скажем, при перекрытии формы другой формой ? Ведь в этом случае Visible = true и начинают выполняться действия, которые должны выполняться при закрытии формы/панели... |
|||
|
||||
| CyraxZ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 10.12.2006 Репутация: нет Всего: нет |
... (не туда напостил)
Это сообщение отредактировал(а) CyraxZ - 27.6.2007, 18:34 |
|||
|
||||
| CyraxZ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 10.12.2006 Репутация: нет Всего: нет |
dsi...
|
|||
|
||||
| CyraxZ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 10.12.2006 Репутация: нет Всего: нет |
Вопрос уже ребром встал. Глюки страшные из-за того, что отписка от событий, при обработке которых перерисовывается панель, происходит после того, как панель деструктурируется. В итоге имеем попытки рисования на панели тогда, когда её уже нет...
Нужно найти или сформировать событие, генерируемое перед уничтожением панели (аналог события закрытия формы)... |
|||
|
||||
| tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 11 Всего: 170 |
-------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
| emmanuil |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 9.1.2007 Репутация: 1 Всего: 3 |
CyraxZ, ты самостоятельно уничтожаешь панель, то как я и говорил, а tol05 показал, используй событие dispose. А если ты не контролируешь этот процесс, то тогда VisibleChanged, в обработчике проверяй существование панели и visible. А если все же не получится выложи этот код, разберемся
Добавлено через 14 минут и 54 секунды Еще можно деструктор переписать |
|||
|
||||
| CyraxZ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 10.12.2006 Репутация: нет Всего: нет |
Обсуждение откладывается на месяц (вышел в отпуск... ура...)
|
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 24 Всего: 232 |
Чтобы не делать ничего после уничтожения панели или т.п. контрола, достаточно проверить свойство IsDisposed.
-------------------- ![]() |
|||
|
||||
| CyraxZ |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 10.12.2006 Репутация: нет Всего: нет |
Чтобы ничего не проверять, лучше делать все дела в обработчике события, которое генерируется до фактического закрытия и освобождения формы, а не после, как Disposed. Тогда не придётся ничего проверять... В случае с Disposed бывают ситуации, когда событие генерируется прямо перед уничтожением формы/контрола. И в обработчике этого события приходится работать с уничтоженным контролом. Проверка на IsDisposed обязательна... Собственно, нужно найти событие, которое генерируется до уничтожения формы/контрола. tol05, По поводу события Disposed. В хелпе указано:
Тогда почему следующая строка не работает:
а эта - работает:
Ведь для событий справа от инремента всегда должно стоять приведение к типу соответствующего делегата... |
||||||||
|
|||||||||
| tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 11 Всего: 170 |
да потому, что нужно писать
-------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [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. |