ببینید این کد منه برای نشون دادن فرم loading که یه فرم ساده است و یه progressBar :
public void Show_WaitingForm(object message)
{
frm.Text = frm.marqueeProgressBarControl1.Text = message.ToString();
frm.ShowDialog();
}
public void Hide_WaitingForm()
{
if (frm.InvokeRequired)
{
frm.BeginInvoke(new MethodInvoker(Hide_WaitingForm), null);
}
else
{
frm.Close();
}
}
و این هم کدی هست که در رویداد load فرم اصلیم نوشتم :
private void Frm_Land_Load(object sender, EventArgs e)
{
System.Threading.Thread th = new System.Threading.Thread(gu.Show_WaitingForm);
Application.DoEvents();
th.Start("در حال بار گذاری اطلاعات ...");
this.Initialize_Data();
this.txt_date.Text = this.sh.Show_Hijri_System();
this.toolStripStatusLabel1.Text = "آماده";
Application.DoEvents();
gu.Close_WaitingForm();
}
همانطور که میبینید قبل از عمل لود کردن داده ها توسط متدی که خودم نوشتم یعنی (Initialize_Data()) یه آبجکتی به نام gu ساختم که فرم loading رو نمایش میده (البته در یه thread جداگانه و توسط متد Show_WaitingForm) و در خط آخر رویداد load، متد Close_WaitingForm() فراخوانی میشه تا فرم loading بسته بشه، تا حالا عملیات به خوبی انجام شده، فقط کل فرمم و برنامم میره پشت برنامه ها قرار میگیره، احتمال میدم یه جای کار این thread برنامم یا فرمم رو از حالت focus خارج میکنه، شما ببینید میتونید راه حلی براش پیدا کنید، مرسی.