Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Медленая загрузка формы


Автор: ZMaximI 19.1.2010, 00:00
Доброе время суток, всем !

Есть проблемка - у меня форма соделжит несколько изображений в виде бекграундов разных компонентом, втом числе и самой формы. Так вот при загрузке вормы видно, как прогрузаются все компоненты по очереди ...
Очень некрасиво.

Подскажите, пожалуйста, как сделать, чтобы показывать форму уже со всем готовым, а сам процесс создания компонентов скрыть ?

Спасибо.

Автор: explorer 19.1.2010, 09:38
Скрой её в конструкторе:
Код

this.WindowState = FormWindowState.Minimized;
this.Visible = false;
this.ShowInTaskbar = false;


А в обработчике события OnLoad() сделай обратное:
Код

this.WindowState = FormWindowState.Normal;
this.Visible = true;
this.ShowInTaskbar = true;


Если компилятор будет ругаться на FormWindowState, добавь в начало файла
Код

using System.Windows.Forms;

Автор: Exai1e 19.1.2010, 11:36
попробуй двойную буферизацию вкл/откл (на форме)

Автор: ZMaximI 19.1.2010, 13:21
explorer, Exai1e, не помогает ни первый вариант, ни второй (((

Автор: Экскалупатор 19.1.2010, 14:24
ZMaximI, можешь выложить проект?

Автор: ZMaximI 20.1.2010, 16:22
Вроде стало понятно "мигание" - при растягивании формы на весь экран, фоновые изображения помигивают ...

Теперь мне непонятно другое - почему при закрытии модального окна мигает окно-владелец данного модального окна ???


Еще есть вопрос ко всем - скажите, пожалуйста, что лучше (ПРАВИЛЬНЕЕ) создавать и добавлять компоненты на форму вручную или использовать дизайнер студии ?

Автор: Экскалупатор 20.1.2010, 16:43
Цитата(ZMaximI @  20.1.2010,  15:22 Найти цитируемый пост)
Теперь мне непонятно другое - почему при закрытии модального окна мигает окно-владелец данного модального окна ???

потому что оно перерисовывается при получении фокуса.


Цитата(ZMaximI @  20.1.2010,  15:22 Найти цитируемый пост)
Еще есть вопрос ко всем - скажите, пожалуйста, что лучше (ПРАВИЛЬНЕЕ) создавать и добавлять компоненты на форму вручную или использовать дизайнер студии ?


кому как. иногда некоторые компоненты удобнее добавлять вручную. но я предпочитаю сделать все по максимум в дизайнере. тогда меньше писанины в коде получается. да и удобнее все же...

Автор: ZMaximI 20.1.2010, 16:45
Цитата(Экскалупатор @ 20.1.2010,  16:43)

потому что оно перерисовывается при получении фокуса.


это можно как-то избежать ?

Автор: Экскалупатор 21.1.2010, 00:29
ZMaximI, я думаю если переопределить OnPaint то можно заставить его не перерисовывать форму(правда я не совсем уверен). но тогда могут возникнуть проблемы, как то: может не прорисовываться часть формы после закрытия дочернего окна.

Автор: ZMaximI 21.1.2010, 12:22
Цитата(Экскалупатор @ 21.1.2010,  00:29)
ZMaximI, я думаю если переопределить OnPaint то можно заставить его не перерисовывать форму(правда я не совсем уверен). но тогда могут возникнуть проблемы, как то: может не прорисовываться часть формы после закрытия дочернего окна.

Спасибо за совет.

Я решил проблему - буду использовать не ShowDialog(), а Show() + плавное увеличение Opacity уже после формирования окна, возникают некоторые неудобства, но зато нет проблем с перерисовкой.


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)