如何在Windows窗体应用程序中构建启动画面?

mir*_*ych 60 c# splash-screen winforms

我需要在应用程序启动时显示启动画面几秒钟.有人知道如何实现这个吗?

非常感谢您的帮助.

Kei*_*thS 80

首先,将您的启动画面创建为无边框,不可移动的形式,并在其上放置图像,设置为最初显示在屏幕中央,按照您想要的方式着色.所有这一切都可以在设计师中设定; 具体来说,你想:

  • 将窗体的ControlBox,MaximizeBox,MinimizeBox和ShowIcon属性设置为"False"
  • 将StartPosition属性设置为"CenterScreen"
  • 将FormBorderStyle属性设置为"None"
  • 将窗体的MinimumSize和MaximumSize设置为与其初始大小相同.

然后,您需要决定在哪里展示它以及在哪里解雇它.这两项任务需要在程序的主启动逻辑的相反侧进行.这可能在您的应用程序的main()例程中,或者可能在您的主应用程序表单的Load处理程序中; 无论您在何处创建大型昂贵的对象,从硬盘驱动器中读取设置,并且通常需要很长时间才能在主应用程序屏幕显示之前进行幕后操作.

然后,您所要做的就是创建表单实例,Show()它,并在启动初始化时保留对它的引用.加载主窗体后,关闭()它.

如果您的启动画面上有动画图像,那么窗口也需要"双缓冲",您需要绝对确保所有初始化逻辑都发生在GUI线程之外(这意味着您不能拥有主屏幕)在mainform的Load处理程序中加载逻辑;您必须创建BackgroundWorker或其他一些线程例程.

  • 启动画面也应该在一个单独的线程上运行,以使进程在后台运行,以便应用程序可以在显示时工作(例如,连接到数据库,加载文件).它告诉用户您的应用程序正在运行,并且它不会浪费时间只需停留X秒. (4认同)

mus*_*fan 7

以下是一些准则步骤......

  1. 创建无边框表单(这将是您的启动画面)
  2. 在应用程序启动时,启动计时器(间隔几秒)
  3. 显示您的Splash表单
  4. 在Timer.Tick事件中,停止计时器并关闭Splash表单 - 然后显示您的主申请表

如果您遇到困难,请回过头来询问有关您问题的更具体问题


小智 5

创建闪屏的简单易用的解决方案

  1. 打开新表单使用名称"SPLASH"
  2. 随时随地改变背景图像
  3. 选择进度条
  4. 选择计时器

现在在计时器中设置计时器:

private void timer1_Tick(object sender, EventArgs e)
{
    progressBar1.Increment(1);
    if (progressBar1.Value == 100) timer1.Stop();        
}
Run Code Online (Sandbox Code Playgroud)

添加新表单使用名称"FORM-1"并在FORM 1中使用以下命令.

注意:Splash表单在打开form1之前有效

  1. 添加此库

    using System.Threading;
    
    Run Code Online (Sandbox Code Playgroud)
  2. 创造功能

    public void splash()
    {     
        Application.Run(new splash());
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 在初始化中使用以下命令,如下所示

    public partial class login : Form
    {     
        public login()
        {
            Thread t = new Thread(new ThreadStart(splash));
            t.Start();
            Thread.Sleep(15625);
    
            InitializeComponent();
    
            enter code here
    
            t.Abort();
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

http://solutions.musanitech.com/c-create-splash-screen/