这里想动态加载窗口时有个过渡窗口,因为显示窗口内容较多,加载比较慢,为了更好的用户体验加载时有个过渡窗口显示,但是过渡窗口不显示,不知道什么原因,代码如下
private void button1_Click(object sender, EventArgs e)
{
this.panel1.Controls.Clear();
Form2 f2 = new Form2();
f2.Dock = DockStyle.Fill;
f2.TopLevel = false;
this.panel1.Controls.Add(f2);
f2.Show(); Form3 f3 = new Form3();
f3.setform();
f3.TopLevel = false;
f3.Dock = DockStyle.Fill;
this.panel1.Controls.Add(f3);
f3.Show(); this.panel1.Controls.RemoveAt(0); }
Form2为过渡窗口,Form3为最终显示窗口,点击按钮之后等待一会直接显示Form3,Form2始终不显示
private void button1_Click(object sender, EventArgs e)
{
this.panel1.Controls.Clear();
Form2 f2 = new Form2();
f2.Dock = DockStyle.Fill;
f2.TopLevel = false;
this.panel1.Controls.Add(f2);
f2.Show(); Form3 f3 = new Form3();
f3.setform();
f3.TopLevel = false;
f3.Dock = DockStyle.Fill;
this.panel1.Controls.Add(f3);
f3.Show(); this.panel1.Controls.RemoveAt(0); }
Form2为过渡窗口,Form3为最终显示窗口,点击按钮之后等待一会直接显示Form3,Form2始终不显示
private void button1_Click(object sender, EventArgs e)
{
this.panel1.Controls.Clear(); Form2 f2 = new Form2();
f2.Dock = DockStyle.Fill;
f2.TopLevel = false;
this.panel1.Controls.Add(f2);
f2.Show(); Thread mythread = new Thread(new ThreadStart(Threadaddfrom3));
mythread.IsBackground = true;
mythread.Start();
} private void Threadaddfrom3()
{
try
{
MethodInvoker mi = new MethodInvoker(this.addfrom3);
this.BeginInvoke(mi);
}
catch (System.Exception ex)
{
}
} private void addfrom3()
{
Form3 f3 = new Form3();
f3.setform();
f3.TopLevel = false;
f3.Dock = DockStyle.Fill;
this.panel1.Controls.Add(f3);
f3.Show(); this.panel1.Controls.RemoveAt(0);
}
Form2有时显示,有时不显示,不知道是什么原因
private void Threadaddfrom3()
{
Thread.Sleep(1);
try
{
MethodInvoker mi = new MethodInvoker(this.addfrom3);
this.BeginInvoke(mi);
}
catch (System.Exception ex)
{
}
}
这个是Form2有时显示,有时不显示,不是完全不显示,form2.BringToFront之后情况是相同的(已经试过)