Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 27.01.2009
Сообщений: 6
1

Как попобороть проблему : Too much for UserControl ?

09.02.2009, 12:54. Показов 763. Ответов 5
Метки нет (Все метки)

Привет всем. Разрабатываю собственный грид для внутрннего пользования, и столкнулся с проблемой, которую пока не могу обойти. У меня около шести сотен Labels + Shapes + Images + ... в моем UserControl, и вывод на экран при инициализации происходит очень медленно, порядка 5 секунд. Причем дело в Visible, т.к. вывод на экран происходит мгновенно, если все contained controls are invisible с самого начала. Т.е. инициализация screen context & paint для userControl жутко тормозит. Причем есть у меня похожий control (календарь), который не user control, a просто набор Labels (около 700) на форме; так он грузится мгновенно. Народ, вразумите, что делать с этим ? Проблема стоит.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.02.2009, 12:54
Ответы с готовыми решениями:

Как разместить UserControl поверх другого UserControl
Такая задача. Есть форма. На ней размещена панель panelRight. Также есть два пользовательских...

Исправить проблему с размножающимися элементами ListBox и проблему со сортировкой
Доброго времени суток. Подскажите пожалуйста, кто знает, все нервы уже истрепал с этой сортировкой...

Кастомная кнопка в UserControl или UserControl со свойствами кнопки
Привет, пытаюсь запихнуть кастомную кнопку в Useк Control. Что-то ерунда какая-то получается. ...

Как исправить проблему
Добрый день! Выписал недавно проекционные часы с Таобао. Все работает, но не устраивает один...

5
Vita
09.02.2009, 15:16 2
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon98/html/vbconoptimizingforspeed.asp

или

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon98/html/vbconoptimizingdisplayspeed.asp

'Because of the graphical nature of Microsoft Windows, the speed of graphics and other display operations is crucial to the perceived speed of the application. The faster forms appear and paint, the faster your application will seem to the user. There are several techniques you can use to speed up the apparent speed of your application, including:

1) Set the ClipControls property of containers to False.
2) Use AutoRedraw appropriately.
3) Use image controls instead of picture box controls.
4) Hide controls when setting properties to avoid multiple repaints.
5) Use Line instead of PSet. '
0 / 0 / 0
Регистрация: 27.01.2009
Сообщений: 6
09.02.2009, 15:56  [ТС] 3
Many thanks for your letter. But your suggestion helps me not very much - as I sayd, problem is in time of painting of several VISIBLE controls in my UserControl (turning on VISIBLE mode of contained controls during runtime, or starting UserControl with several VISIBLE contained controls). Not ClipControls, nor AutoRedraw properties had solve this problem. Nor hide controls, because I have to turn on VISIBLE mode again after hiding, but it is slow.

Для тех, кто не понял, MAN: ни ClipControls, ни Autoredraw, ни hide controls не поможет, бикоз проблема в прорисовке contained controls in UserControl (Shapes & Labels в моем случае). Почему-то здесь очень тормозит, в отличии от controls в форме, рисуемых мгновенно.
0
0 / 0 / 0
Регистрация: 19.02.2008
Сообщений: 25
13.02.2009, 06:18 4
Доброго времени суток.

Я тут немного испугался! А зачем столько всякой мути в твоем контроле? Это же чистой воды издевательство над ресурсами машини м пользователем!

Что ж за задачка то такая у тебя?
Не просветищ?
0
0 / 0 / 0
Регистрация: 27.01.2009
Сообщений: 6
13.02.2009, 18:27  [ТС] 5
Поясняю: создается Grid для отображения любого типа данных, и в этом Grid, разумеется, должно быть энное количество ячеек, дабы эти любые данные, того, отображались. Может это и муть, однако как посмотреть: существуют ли в природе готовые сетки, позволяющие отображать сложные массивы с ресайзингом, подчеркиваниями итоговых строк, авто-'зеброй', настраиваемой областью выделения и т.д.? Не существуют. В любом случае удобнее создать готовую сетку 'под себя'. И если кому-то кажется, что это муть, народ, то удивляюсь, как вам пришла в голову мысль вообще слезть с дивана и заглянуть в дисплей компьютера.

А что касательно этой проблемы, то она решена буквально на днях. Просто: не надо ставить UserControl.BackStyle в Transparent (конечно, как я раньше не догадался ?). Если он Opaque, то графика просто летает, с любым количеством contained controls.
0
0 / 0 / 0
Регистрация: 19.02.2008
Сообщений: 25
13.02.2009, 22:21 6
Доброго времени суток.

Муть или не муть - не в этом вопрос.
Я говорил лиш о нецелесообразности решения таким путем. Есть более красивые решения, которые, одновременно с этим являются менее ресурсоемкими.

Одно из таких решений, кстати, на 90% отвечает требованиям поставленной задачи. Это SGrid контрол от vbAccelerator.com который распространяется абсолютно бесплатно и с исходниками.

Не поленись, посмотри его.

Удачи, и да прибудет с Вами Сила.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.02.2009, 22:21

Управление usercontrol из другого usercontrol
На форме размещено 2 usercontrol. Как управлять usercontrol из другого Добавлено через 22 часа...

DP UserControl внутри UserControl MVVM
Есть UC c DP Text <Grid> <TextBlock HorizontalAlignment="Left" Text="{Binding Text,...

Перенос данных из UserControl в UserControl
Всем привет ! :) Суть проблемы следующая: • Есть 2 UserControl “V” и “MN” • В “V” есть textBox...

Как исправить проблему с зацикливанием
short int choose = 0; do { cout << "---------------------Choose...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.