Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
4 / 4 / 0
Регистрация: 24.02.2016
Сообщений: 229
1

Задержки в прорисовке формы

06.04.2019, 00:47. Показов 1577. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Коллеги, доброго времени суток!

Нужна помощь.
В программе есть стартовая форма. После показа формы в процедуре
VB.NET
1
2
3
Private Sub Form_Main_Shown(sender As Object, e As EventArgs) Handles Me.Shown
 
End Sub
есть значительное количество кода. Там и чтение из XML файла, заполнение Combobox из базы данных... вообщем этот код выполняется около 6 секунд (долго происходит это из за того, что на форме много Combobox, которые заполняются последовательно из базы, ибо содержание последующих зависит от того, что выбрано в предыдущих. Эдакое динамическое заполнение комбобоксов, и заполнение это происходит из базы данных). И в это время параллельно пытается прорисоваться форма. И из за занятости системы она прорисовывается очень медленно.
Соответственно у меня вопрос, который делится на 2 части
1.1 можно ли сначала прорисовать форму, а уже после этого выполнять код (хотя по последовательности кода так и должно быть, но происходит все не последовательно?
1.2 можно ли сделать заставку программы, Некое дополнительное окно с картинкой, которое бы на время загрузки и обработки стартового кода "закрывало" все, что происходит с формой?

Заранее признателен за участие.
С уважением, Алексей.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.04.2019, 00:47
Ответы с готовыми решениями:

Исчезает рисунок при прорисовке формы
Здравствуйте. Создаём на форме PictureBox с именем picMain и размерами 300x300. Создаём кнопку с...

Подвисание при прорисовке формы
Доброго времени суток. Возникала такая проблема. Раньше никогда не писал приложений с большим...

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

Виснет при прорисовке TImage
при задании времени (0.005-0.015) происходит и нажатии на кнопку должно происходить рисование...

4
Модератор
Эксперт .NET
4303 / 3378 / 506
Регистрация: 27.01.2014
Сообщений: 6,180
06.04.2019, 04:04 2
Allleksey, а код можно посмотреть, может его можно как-то оптимизировать?
0
1152 / 916 / 153
Регистрация: 25.07.2015
Сообщений: 2,052
06.04.2019, 08:34 3
Вот что говорит документация по последовательности событий при загрузке формы .
Можете попробовать поиграться .
Цитата Сообщение от Allleksey Посмотреть сообщение
можно ли сначала прорисовать форму, а уже после этого выполнять код
Можно
VB.NET
1
2
3
4
5
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  Me.Show
  .......  ' Здесь ваш код загрузок combobox и т.д.
 
End Sub
Но вообще , как правильно написал Yury Komar, хорошо бы на код взглянуть.
0
4 / 4 / 0
Регистрация: 24.02.2016
Сообщений: 229
06.04.2019, 08:49  [ТС] 4
Коллеги, пока вышел из ситуации следующим образом. Форма с заставкой. Надо же показывать что то на экране, пока грузится программа.
VB.NET
1
2
3
    Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles Me.Shown
        Form_Main.Show()
    End Sub
И непосредственно основная форма
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
    Private Sub Form_Main_Activated(sender As Object, e As EventArgs) Handles Me.Activated
        If blnFormMainLoad = False Then
            Me.Visible = False
        End If
    End Sub
 
    Private Sub Form_Main_Shown(sender As Object, e As EventArgs) Handles Me.Shown
 
    ' Код, работающий после запуска программы
 
        Me.Visible = True
        Me.Focus()
    End Sub
Таким образом и заставку показываю, и пользователь не видит "прорисовку" основной формы.

Цитата Сообщение от Yury Komar Посмотреть сообщение
а код можно посмотреть, может его можно как-то оптимизировать?
Думаю не то, что можно оптимизировать. Его нужно оптимизировать. Но сейчас выбрал путь "сначала работоспособность, потом оптимизация и ускорение".
Показать код не проблема. Но он достаточно большой.

С уважением, Алексей.
0
1152 / 916 / 153
Регистрация: 25.07.2015
Сообщений: 2,052
06.04.2019, 08:53 5
А, ну собственно , сразу не обратил внимание , вы одновременно рисуете и грузите данные ...зачем ?
VB.NET
1
2
Private Sub Form_Main_Shown(sender As Object, e As EventArgs) Handles Me.Shown
End Sub
Сначала загружайте , потом рисуйте.
В этом событии ваш код должен загружать данные ,оно происходит до первоначального отображения формы.
Более подробно о событиях по ссылке , приведённой ранее.
VB.NET
1
2
3
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
 
End Sub
0
06.04.2019, 08:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.04.2019, 08:53
Помогаю со студенческими работами здесь

Мерцание картинки при прорисовке
Здравствуйте. На словах не могу обьяснить суть проблемы - по этому выкладываю пример)) Суть в том...

Мигание при прорисовке картинки
Добрый день уважаемые форумчане. Дано: 1) Две формы, на каждой из которой по одинаковому...

Мерцание при прорисовке в Паскале
Добрый день. Такой вопрос я нарисовал картинку при передвижении ее она мерцает как убрать мерцание....

Постоянное мерцание при прорисовке
создал класс, в котором реализованы методы для рисования графиков. есть маcсив sinys, где у меня...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru