Take the 2-minute tour ×

I need to show splash screen on my application start for few seconds. Does anybody know how to implement this?

Will be much appreciate for the help.

share|improve this question
+1 because there is no REAL example of a good splash so far. I've got into a messy implementation from diferent blogs and websites but a good one just came up after a lot of trouble. The question is really good. –  LordALMMa Nov 1 '11 at 3:48
There is another option that does not require you to use timers or keep a reference of your splash form in your main form or vice versa: stackoverflow.com/questions/7963275 –  Veldmuis Nov 1 '11 at 7:25
possible duplicate of Splash Screen Example –  Jim G. Dec 10 '13 at 21:43
add comment

4 Answers

up vote 16 down vote accepted

First, create your splash screen as a borderless, immovable form with your image on it, set to initially display at the center of the screen, colored the way you want. All of this can be set from within the designer; specifically, you want to:

  • Set the form's ControlBox, MaximizeBox, MinimizeBox and ShowIcon properties to "False"
  • Set the StartPosition property to "CenterScreen"
  • Set the FormBorderStyle property to "None"
  • Set the form's MinimumSize and MaximumSize to be the same as its initial Size.

Then, you need to decide where to show it and where to dismiss it. These two tasks need to occur on opposite sides of the main startup logic of your program. This could be in your application's main() routine, or possibly in your main application form's Load handler; wherever you're creating large expensive objects, reading settings from the hard drive, and generally taking a long time to do stuff behind the scenes before the main application screen displays.

Then, all you have to do is create an instance of your form, Show() it, and keep a reference to it while you do your startup initialization. Once your main form has loaded, Close() it.

If your splash screen will have an animated image on it, the window will need to be "double-buffered" as well, and you will need to be absolutely sure that all initialization logic happens outside the GUI thread (meaning you cannot have your main loading logic in the mainform's Load handler; you'll have to create a BackgroundWorker or some other threaded routine.

share|improve this answer
thanks for detailed answer –  sound Oct 31 '11 at 15:31
The splash screen should also run on a separate thread to have a process run in the background so that your application can do work while being displayed (e.g. connect to your database, load files). It tells the user that your application is running and it does not waste their time by just staying there for X number of seconds. –  Scott Wylie Nov 1 '11 at 0:40
+1 for details. I've created a splash here using a new application loop (Application.Run) for it and a singleton approach so I can create the splash at the very start and close it just before the login form being shown. –  LordALMMa Nov 1 '11 at 3:47
add comment

Here are some guideline steps...

  1. Create a borderless form (this will be your splash screen)
  2. On application start, start a timer (with a few seconds interval)
  3. Show your Splash Form
  4. On Timer.Tick event, stop timer and close Splash form - then show your main application form

Give this a go and if you get stuck then come back and ask more specific questions relating to your problems

share|improve this answer
add comment

First you should create a form with or without Border (border-less is preferred for these things)

public class SplashForm : Form
    Form _Parent;
    BackgroundWorker worker;
    public SplashForm(Form parent)
         BackgroundWorker worker = new BackgroundWorker();
         this.worker.DoWork += new System.ComponentModel.DoWorkEventHandler(this.worker _DoWork);
         _Parent = parent;
    private void worker _DoWork(object sender, DoWorkEventArgs e)

At Main you should use that

   static class Program
            static void Main()
                Application.Run(new SplashForm());
share|improve this answer
add comment

create splash

private void timer1_Tick(object sender, EventArgs e)
    progressBar1.Value = counter *5;
    // label2.Text = (5*counter).ToString();
    if (counter ==20)
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.SystemColors.GradientInactiveCaption;
this.ClientSize = new System.Drawing.Size(397, 283);
this.ControlBox = false;
this.ForeColor = System.Drawing.SystemColors.ControlLightLight;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.Name = "Splash";
this.ShowIcon = false;
this.ShowInTaskbar = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;

Then in your application

sp = new Splash();
share|improve this answer
add comment

Your Answer


