Winform跳转不"闪现"

第一次写博客,所以写的不好还请大家多多见谅!

      因为公司做的是C/S项目,客户端是winform窗体,后台是JAVA做的。然后最近开发遇到了一些问题:窗体跳转的时候出现“闪现”(假如在桌面运行,跳转时会先显示桌面再显示下一个窗体),大致思路就是在跳转后的窗体里把跳转前的窗体关闭,而不是在跳转前窗体中写Form2.Show();this.Close();  还是一边贴代码一遍描述吧,这样更直观一点

  • 首先在第一个窗体里实例化第二个窗体:

              Form1 form1 = new form1();

              form1.Show();   

         注:在这里先不关闭此窗体

  • 然后在第二个窗体中关闭第一个窗体

             在Load事件中创建一个定时器,定时关闭第一个窗体:

private Timer timer2;

private void Form2_Load(object sender, EventArgs e)
{
       try
       {
             timer2 = new Timer();
             timer2.Interval = 2000;
             timer2.Enabled = true;
             timer2.Tick += Timer2_Tick;
        }
        catch (Exception ex)
        {
              //
        }
}

private void Timer2_Tick(object sender, EventArgs e)
{
if(timer2!=null)
{
timer2.Enabled = false;
timer2.Dispose();
}
this.Invoke(new MethodInvoker(delegate { foreach (var item in Application.OpenForm) { if(item is Form1) { item.Close(); } } })); }

       当然前提是这两个窗体都不是主窗体,如果是主窗体,则把item.Close()改成item.Hide(); 等到要返回时则用Application.OpenForm来查找到此窗体并Show出来。

       Over.

猜你喜欢

转载自www.cnblogs.com/bigHsir/p/9035490.html