Cómo hacer una pantalla de bienvenida de una forma fácil en C#

Muchas aplicaciones muestran una pantalla de bienvenida para que el usuario sepa que el programa se está cargando y para añadir un poco de estilo al software. La pantalla de bienvenida muestra, por regla general, el nombre de la aplicación, el número de la versión, así como información sobre los derechos de autor. Este enfoque permite a los desarrolladores utilizar cualquier form de Windows como pantalla de bienvenida. Esta pantalla se esconde automáticamente cuando el primer Windows form termina de cargar y se muestra. También aparece durante un corto periodo de tiempo al cerrar la aplicación.

Este método no utiliza temporizador alguno. Sólo muestra la pantalla de bienvenida mientras el sistema está cargando, y una vez la aplicación está lista para usarse, la pantalla de bienvenida se oculta progresivamente.

El tema es usar el código de inicio normal con sólo modificaciones menores. La pantalla de bienvenida es sólo un form sencillo de Windows sin ningún tipo de codificación especial. No difiere nada del primer form de un proyecto inicial. El único programa que se ha cambiado es el programa de lanzamiento llamado Program.cs en tu proyecto. Program.cs es un programa generado por Windows que solamente se cambia cuando se modifica el form superior del proyecto.

En primer lugar, hay que crear un nuevo form de Windows para que sea la página de bienvenida. Ajusta la imagen de fondo del form para que se convierte en la nueva página de bienvenida. Puede agregar etiquetas para mantener dinámicamente la información del software como la versión, etc. En las propiedades del form, establece los bordes como Ninguno. La ubicación a CenterScreen y el tamaño a AutoSize para que si decides cambiar la imagen, el tamaño del formulario sigue siendo correcto. También he incluido dos métodos, SayWelcome() y SayGoodbye() para mostrar un mensaje de bienvenida y despedida.

El código original en Program.cs tenía sólo unas pocas líneas y terminaba con:

Application.Run(new MainForm);

Comenta esa línea y añade el nuevo código para la pantalla de bienvenida. En primer lugar, crea una instancia estática de la pantalla de bienvenida como un atributo de la static class Program.

static class Program
{
    static SplashScreen splashscreen;

Inicializar la instancia splashscreen en el cuerpo del método Main() después de la línea Application.Run() que hemos comentado antes. La aplicación te mostrará un error si intentas hacerlo antes de las llamadas a

splashscreen = new SplashScreen();
splashscreen.Show();
splashscreen.SayWelcome();

A continuación, crea una instancia del top windows form. Añádela en eventos que se muestran y también en los cerrados. Después haz Application.Run() pero esta vez tienes que utilizar la instancia en lugar de new Mainform.

MainForm mainform = new MainForm();
main.Shown += main_Shown;
main.FormClosed += main_FormClosed;

Application.Run(mainform); 

Para el método main_Shown(), ocultar la pantalla de bienvenida.

static void main_Shown(object sender, EventArgs e)
{
    // Ocultar pantalla bienvenida. 
    splashscreen.Hide();
}

Para el método main_FormClosed(), cierra el formulario activo y muestra de nuevo la pantalla de bienvenida. He añadido un System.Threading.Thread.Sleep(1000) para que se muestre un segundo esta pantalla una vez el usuario ha cerrado por su propia voluntad la aplicación. Lo podéis ver en el siguiente código:

static void main_FormClosed(object sender, FormClosedEventArgs e)
{
    Form form = sender as Form;
    form.Hide();

    // Escondemos la pantalla de bienvenida y decimos adiós
    splashscreen.Show();
    splashscreen.SayGoodBye();
    System.Threading.Thread.Sleep(1000);   // Pausamos un segundo.
}

Esto es todo lo que hay que hacer para mostrar una pantalla de bienvenida. Aquí está el Program.cs completo con las revisiones de código para la pantalla de bienvenida.

// Program.cs
// Modificado para mostrar la pantalla de bienvenida
//
using System;
using System.Windows.Forms;
namespace WindowsAppWithSplashScreen 
{
    static class Program
    {
        // Creamos la instancia para la pantalla de bienvenida 
        static SplashScreen splashscreen;

        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            //Application.Run(new MainForm()); 
            //-------------- Fin de las líneas por defecto. --------------// 

            // Inicializamos y mostramos la pantalla de bienvenida. Damos el mensaje de bienvenida
            splashscreen = new SplashScreen();
            splashscreen.Show();
            splashscreen.SayWelcome();

            // Creamos una instancia de MainForm y la asignamos dentro de los eventos mostrados y cerrados. 
            MainForm main = new MainForm();
            main.Shown += main_Shown;
            main.FormClosed += main_FormClosed;

            Application.Run(main);
        }

        static void main_FormClosed(object sender, FormClosedEventArgs e)
        {
            // Lo escondemos  
            Form form = sender as Form;
            form.Hide();

            // Mostramos la pantalla de bienvenida y cerramos 
            splashscreen.Show();
            splashscreen.SayGoodBye();
            System.Threading.Thread.Sleep(1000);   // Pausamos un segundo.
        }

        static void main_Shown(object sender, EventArgs e)
        {
            // Escondemos la pantalla. 
            splashscreen.Hide();
        }
    }
}

Una nota final: si cambias el nombre del form inicial, es posible que tengas que editar manualmente Program.cs otra vez. Los métodos SayWelcome() y SayGoodbye() son opcionales y pueden ser omitidos. Para mi aplicación, utilicé un reconocimiento de voz para que el programa dijera hola y adiós para la bienvenida y despedida. Si lo has notado, te habrás dado cuenta que esta es la solución más simple para mostrar una pantalla de bienvenida.

Espero que este tutorial te haya gustado y sepas aplicarlo a tus propios proyectos. Y volviendo otra vez al tema, ¿qué pantalla de bienvenida de los distintos softwares que has probado es la que más te ha gustado? Indícanoslo en los comentarios.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP