Событие
Form Load
наступает раньше Shown
, поэтому пользователь ничего не увидит ...
Вы можете поместить код в событие Shown
.
Или вы можете поместить панель в виде всплеска, который вы создадите и отобразите в Load.
Чтобы инициализировать полосу, используйте свойство Step
, чтобы определить приращение, и Maximum
, чтобы определить количество шагов.
Следующее использование PerformStep()
между шагами с Refresh
.
Пример в событии Shown
:
progressBarLoad.Value = 0;
progressBarLoad.Maximum = 5;
progressBarLoad.Step = 1;
progressBarLoad.Refresh();
Init1();
progressBarLoad.PerformStep();
progressBarLoad.Refresh();
Init2();
progressBarLoad.PerformStep();
progressBarLoad.Refresh();
Init3();
progressBarLoad.PerformStep();
progressBarLoad.Refresh();
Init4();
progressBarLoad.PerformStep();
progressBarLoad.Refresh();
Init5();
progressBarLoad.PerformStep();
progressBarLoad.Refresh();
Используя форму-всплеск, создайте для примера aПоле FixedSingle
с ShowInTaskBar
ложным и FormBorderStyle
ложным и StartPosition
центральным экраном. Поставьте бар с Modifiers
как внутренний или публичный. Таким образом, вы можете управлять им из события Load
:
var splash = new SplashForm();
splash.progressBarLoad.Value = 0;
splash.progressBarLoad.Maximum = 5;
splash.progressBarLoad.Step = 1;
splash.Show();
Init1();
splash.progressBarLoad.PerformStep();
splash.progressBarLoad.Refresh();
Init2();
splash.progressBarLoad.PerformStep();
splash.progressBarLoad.Refresh();
Init3();
splash.progressBarLoad.PerformStep();
splash.progressBarLoad.Refresh();
Init4();
splash.progressBarLoad.PerformStep();
splash.progressBarLoad.Refresh();
Init5();
splash.progressBarLoad.PerformStep();
splash.progressBarLoad.Refresh();
splash.Close();
Вы можете рефакторинг, используя метод DoProgress
:
void DoProgress()
{
splash.progressBarLoad.PerformStep();
splash.progressBarLoad.Refresh();
}
Таким образом, вы также можете поместить этот метод вSplashForm
(удалить splash.
) и добавить InitProgress
:
public void InitProgress(int stepCount, int stepIncrement)
{
progressBarLoad.Value = 0;
progressBarLoad.Maximum = stepCount;
progressBarLoad.Step = stepIncrement;
}
Поэтому вы можете сделать это сейчас:
var splash = new SplashForm();
splash.InitProgress(5, 1);
splash.Show();
Init1();
splash.DoProgress();
Init2();
splash.DoProgress();
Init3();
splash.DoProgress();
Init4();
splash.DoProgress();
Init5();
splash.DoProgress();
splash.Close();