欢迎加载c#

时间:2011-07-01 23:09:35

标签: c# forms

我正在使用C#创建一个程序,它几乎已经结束了,我认为包含一个欢迎表单加载5秒会很有趣,显示程序的名称和其他东西...像这样在微软的话......

enter image description here

但我不知道该怎么做。我想请一些建议......

3 个答案:

答案 0 :(得分:4)

如果您使用的是WPF,则可以使用System.Windows.SplashScreen对象。

在WinForms中,它有点困难,但您可以使用example located here来帮助您入门。

请记住,启动画面适用于应用程序需要一段时间才能加载以帮助用户感觉某些事情发生的情况。如果您只是将应用程序负载延迟5秒,那么您实际上降低用户的体验。五秒是很长的时间......

答案 1 :(得分:3)

好吧,你创建一个表单,将它的边框设置为none,将一个图像,一个winforms计时器设置为在5秒后开启,你打开主表单,然后你就可以了。

但是,更复杂的启动画面(WinForms)需要GDI +,剪辑等,但我猜这个......

答案 2 :(得分:1)

我使用'System.Theading'这样做,这对我很有用。下面的代码在一个单独的线程上启动一个“启动画面”,而你的应用程序(在我下面的例子中称为MainForm())加载或初始化。首先在你的“main()”方法中(在program.cs文件中,除非你已经重命名),你应该显示你的启动画面。这将是您希望在启动时向用户显示的WinForm或WPF表单。这是从main()启动,如下所示:

    [STAThread]
    static void Main()
    {
        // Splash screen, which is terminated in MainForm.       
        SplashForm.ShowSplash();

        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);

        // Run UserCost.
     Application.Run(new MainForm());
    }

在您的SplashScreen代码中,您需要以下内容:

public partial class SplashForm : Form
{

    // Thredding.
    private static Thread _splashThread;
    private static SplashForm _splashForm;    

    public SplashForm()
    {
        InitializeComponent();
    }

    // Show the Splash Screen (Loading...)      
    public static void ShowSplash()    
    {        
        if (_splashThread == null)        
        {            
            // show the form in a new thread            
            _splashThread = new Thread(new ThreadStart(DoShowSplash));            
            _splashThread.IsBackground = true;            
            _splashThread.Start();        
        }    
    }    

    // Called by the thread    
    private static void DoShowSplash()    
    {        
        if (_splashForm == null)            
            _splashForm = new SplashForm();        
        // create a new message pump on this thread (started from ShowSplash)        
        Application.Run(_splashForm);
    }    

    // Close the splash (Loading...) screen    
    public static void CloseSplash()    
    {        
        // Need to call on the thread that launched this splash        
        if (_splashForm.InvokeRequired)            
            _splashForm.Invoke(new MethodInvoker(CloseSplash));        
        else            
            Application.ExitThread();    
    }

}

这将在单独的后台线程上启动splash表单,允许您同时继续呈现主应用程序。要在初始化应用程序时关闭并关闭启动画面,请将以下内容放在默认构造函数中(如果需要,可以重载构造函数):

    public MainForm()
    {
        // ready to go, now initialise main and close the splashForm. 
        InitializeComponent();
        SplashForm.CloseSplash();
    }

这一切都是不言自明的,你应该能够自己确定代码的确切工作。我希望它可以帮助你。