viernes, 25 de octubre de 2013

How to... Como crear una pantalla de carga de nuestro proyecto en .NET, SplashScreen

Continuamos con .NET en el blog, recuerda que puedes ver una lista completa de las entradas relacionadas con .NET aquí.
En este post vamos a crear una pantalla de inicio de nuestra aplicación que vamos a mostrar antes de que arranque nuestro proyecto. Esto servirá para mostrar un mensaje mientras se abre nuestra aplicación y así darle una apariencia profesional a nuestro desarrollo. Para ello lo primero que vamos a hacer es crearnos un nuevo proyecto, en mi caso lo llamaré EjemploSplash.

En el Form principal del proyecto he puesto un label con el texto Formulario Principal para que quede identificado solamente. 

Entonces vamos a añadir un nuevo formulario a nuestro proyecto donde vamos a configurar la pantalla inicial. Para ello botón derecho encima del nombre del proyeto y seleccionamos añadir nuevo formulario. Llamaremos al formulario Splash.
Ahora necesitamos especificar un timer en el formulario para especificar la duración de nuestra pantalla inicial. Para ello vamos a arrastrar un componente Timer y al mismo le vamos a especificar una duración de 3000 milisegundos (osease 3 segundos) y lo habilitamos cambiando la propiedad Enabled a true.


 
Ahora vamos a configurar el Form para que muestre la imagen que deseamos. Para ello vamos a poner el fondo en blanco y quitamos el borde.

Vamos a insertar entonces un PictureBox del tamaño ajustado al Form y le especificamos la imagen que queremos cargar.

Así es como finalmente ha quedado mi Form. Además le he especificado en la propiedad StartPosition que sea del tipo CenterScreen para que aparezca en el centro de la pantalla.

 
Ahora vamos a completar la funcionalidad. Lo primero en el Timer vamos a gestionar su evento de que se cumpla el tiempo especificado. Como lo tenemos especificado a Enabled, nada más cargar el formulario se activa y cuando se cumplen los 3 seg. saltará el evento. Entonces vamos a parar el timer, indicar que el formulario se ha cargado con éxito y cerrar el Form para mandar el control de nuevo a nuestro hilo principal. El código que necesitamos para ello es el siguiente:

        private void timer1_Tick(object sender, EventArgs e)
        {
            timer1.Stop();
            this.DialogResult = DialogResult.OK;
            this.Close();
        }
Ahora solamente nos queda en el program.cs especificar que en vez de cargar el formulario por defecto se nos cargue el que nos hemos creado de nombre Splash y en el caso de que todo haya ido correctamente cargamos el formulario de nuestra aplicación. Para ello necesitamos cambiar el Main por lo siguiente:
static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Splash sp = new Splash();
            if (sp.ShowDialog() == DialogResult.OK)
            {
                Application.Run(new Form1());
            }
        }
Si ejecutamos entonces nuestra aplicación, veremos como se nos carga la imagen en el centro de la pantalla y luego vamos a nuestro Form principal. Será algo así, como hemos dicho, primero cargamos el Splash y luego el Form.
 

Otro ejemplo de .NET completado. Ya sabes, si te ha servido difunde sin miedo y si necesitas cualquier aclaración no dudes en usar los comentarios.

No hay comentarios :

Publicar un comentario