Страница: 1 |
|
Вопрос: И снова о заставке
|
Добавлено: 25.01.05 14:48
|
|
Автор вопроса: Barulya
|
Подскажите пожалуйста, как мне сделать к своей проге заставку. Дело в том, что прога загружает очень много данных и много времени уходит на их обработку перед загрузкой главной формы. Пробовал из Sub Main() запускать сначала заставку, выполнял определенные действия по загрузке данных и их обработке, после этого закрывал заставку и открывал главную форму. Но, при загрузке заставки через метод frmStartUp.Show, она не прорисовывается полностью, а только ее границы и белый (пустой) фон. На заставке я использую картинки и надписи.
Заранее благодарен
Ответить
|
Номер ответа: 2 Автор ответа: Artyom
Разработчик
Вопросов: 130 Ответов: 6602
|
Профиль | | #2
|
Добавлено: 25.01.05 18:05
|
Была у меня необходимость сделать что-то подобное.
Запускал новую форму в отдельном потоке...
Вот такой код примерно.
Module Main
Public MainForm As frmMain
Public SplashForm As frmSplash
 elegate Sub Noparams()
Public Sub Main()
 im SplashThread As New Threading.Thread(AddressOf ShowSplash)
SplashThread.Start()
'Создадим главную форму - она должна существовать до
'запуска Loader.Load
MainForm = New frmMain
'Запускаем длительную процедуру.
Loader.Load()
MainForm.StartPosition = FormStartPosition.CenterScreen
MainForm.Show()
MainForm.Activate()
 im Hider As Noparams = AddressOf SplashForm.Hide
SplashForm.Invoke(Hider)
SplashForm.MustExit = True
Application.Run(MainForm)
End Sub
Public Sub ShowSplash()
'Отобразим первую форму
 im Splash As New frmSplash
SplashForm = Splash
Splash.Size = New Size(Splash.Size.Width, Splash.Size.Height + 24)
Application.Run(Splash)
End Sub
End Module
Вобщем, элементарный код, звезд с неба не хватат...
Вот только начались проблемы
Во-первых.
Иногда при выполнении в форме frmSplash этого кода (сгенерирован
дизайнером формы):
Me.Label1.Font = New System.Drawing.Font("Courier New", 19.0!,
System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
вылазит исключение:
An unhandled exception of type 'System.Runtime.InteropServices.ExternalException'
occurred in system.dll
Additional information: Failed to create system events window thread.
Во-вторых.
Иногда при выполнении этой строчки кода (из вышеприведенной процедуры
Main):
MainForm.Show()
происходит исключение
An unhandled exception of type 'System.NullReferenceException' occurred in
system.windows.forms.dll
Additional information: Object reference not set to an instance of an object.
Попробовал убрать весь код, связанный с новым потоком, вроде,
исключение не вылазит, раз 20 проверял...
Что это за гадость и как с нею бороться, я не знаю.
Надеюсь, что у тебя таких исключений возникать не будет
PS А на Splash-форму в своей проге я в конце-концов забил.
Сейчас, сидя на Athlon 2000+ & 512 MB Ram вообще забыл, зачем я хотел
сделать эту Splash-форму - прога запускается за пару секунд.
Ответить
|
Страница: 1 |
Поиск по форуму