2011-06-22 52 views
3

我在做win表单项目(C#)。在那个项目中,我愿意添加欢迎屏幕。所以我创建了一个欢迎屏幕。但是,它想显示几个小部件并自动关闭并打开登录屏幕。如何在Winform中显示欢迎屏幕?

System.Threading.Thread.Sleep(1500); 
      LogIn n = new LogIn(); 
      n.Show(); 

我试着在窗体显示的代码中加载,激活事件。 BUt没用。任何人都知道该怎么做?

My welcome screen -

+0

几分钟?不要忘记卸载程序。 –

+3

[C#启动画面问题]的可能重复(http://stackoverflow.com/questions/392864/c-splash-screen-problem) –

回答

4

Here's a tutorial解释如何使一个启动画面。

+0

谢谢。 Iam使用thered来显示Splach屏幕。 Thread th = new Thread(new ThreadStart(DoSplash)); th.Start(); Thread.Sleep(3000); th.Abort(); Thread.Sleep(1000); – Sagotharan

2

在Program.cs中为闪屏添加一行。在启动画面中运行计时器并关闭表格。

私有静态无效的主要(){

 Application.EnableVisualStyles(); 

     Application.SetCompatibleTextRenderingDefault(false); 
     Application.Run(new FSplash()); // This is your splash form << added 
     Application.Run(new FMain()); 
    } 
1

在我看来,你不能为.NET应用程序在.NET中创建一个启动画面:

的目的启动屏幕是分散用户长时间的等待时间,直到应用程序加载,启动和初始化。

由于.NET应用程序本身已经有一些启动时间,所​​以在这段时间内没有可用的启动画面。

我的解决方案

所以在我的申请,我这样做的方式如下:

  1. 写一个小的,微小的原生C++应用程序。
  2. 当C++应用程序启动时,显示最顶部的位图(没有边框的窗口)。
  3. 让C++应用程序启动实际的.NET应用程序。
  4. .NET应用程序启动,并在完成启动和初始化时,它会通知C++应用程序关闭。这是通过IPC完成的。

进程间通信完成方式如下:

  1. 的C++应用程序写入临时文件。
  2. 调用.NET应用程序时,文件名作为命令行参数传递。
  3. C++应用程序定期轮询文件是否存在。
  4. 只要启动画面必须隐藏,.NET应用程序就会立即删除文件。
  5. 只要临时文件不再存在(或发生超时),C++应用程序就会立即存在。

我知道这不是100%完美,这是我从几年前开始开发.NET应用程序以来最合适的解决方案。

+1

当他知道C++时,他可以做到这一点。 –

+3

您的意见将是错误的。它是一个简单的任务,用.NET Framework中的任何语言创建启动画面。你的做法既矫枉过正,又错误。 –

+1

感谢@Ramhound为您的平衡评论。 –