Ampliar el modelo de la aplicación de Visual Basic

Puede agregar funcionalidad al modelo de aplicación reemplazando los miembros Overridable de la clase WindowsFormsApplicationBase. Esta técnica permite personalizar el comportamiento del modelo de aplicación y agregar llamadas a sus propios métodos a medida que la aplicación se inicia y se cierra.

Introducción visual al modelo de la aplicación

En esta sección se presenta visualmente la secuencia de llamada a función en el modelo de la aplicación de Visual Basic. En la siguiente sección se describe detalladamente el objetivo de cada función.

En el gráfico siguiente se muestra la secuencia de llamada del modelo de la aplicación en una aplicación Windows Forms en Visual Basic normal. La secuencia se inicia cuando el procedimiento Sub Main llama al método Run.

Diagram showing the Application Model call sequence.

El modelo de la aplicación de Visual Basic también proporciona los eventos StartupNextInstance y UnhandledException. Los gráficos siguientes muestran el mecanismo para generar estos eventos.

Diagram showing the OnStartupNextInstance method raising the StartupNextInstance event.

Diagram showing the OnUnhandledException method raising the UnhandledException event.

Reemplazo de los métodos base

El método Run define el orden en el que se ejecutan los métodos Application. De forma predeterminada, el procedimiento Sub Main para una aplicación Windows Forms llama al método Run.

Si la aplicación es una aplicación normal (aplicación de varias instancias) o la primera instancia de una aplicación de una sola instancia, el método Run ejecuta los métodos Overridable en el orden siguiente:

  1. OnInitialize. De forma predeterminada, este método establece los estilos visuales, los estilos de presentación de texto y la entidad de seguridad actual del subproceso de aplicación principal (si la aplicación usa la autenticación de Windows) y llama a ShowSplashScreen si no se utiliza /nosplash ni -nosplash como argumento de la línea de comandos.

    La secuencia de inicio de la aplicación se cancela si esta función devuelve False. Esto puede ser útil si hay circunstancias en las que la aplicación no se debe ejecutar.

    El método OnInitialize llama a los métodos siguientes:

    1. ShowSplashScreen. Determina si la aplicación tiene una pantalla de presentación definida y, en caso afirmativo, muestra la pantalla de presentación en un subproceso independiente.

      El método ShowSplashScreen contiene el código que muestra la pantalla de presentación durante al menos el número de milisegundos especificado por la propiedad MinimumSplashScreenDisplayTime. Para usar esta funcionalidad, debe agregar la pantalla de presentación a la aplicación mediante el Diseñador de proyectos (que establece la propiedad My.Application.MinimumSplashScreenDisplayTime en dos segundos) o establecer la propiedad My.Application.MinimumSplashScreenDisplayTime en un método que reemplace el método OnInitialize o OnCreateSplashScreen. Para obtener más información, vea MinimumSplashScreenDisplayTime.

    2. OnCreateSplashScreen. Permite a un diseñador emitir código que inicializa la pantalla de presentación.

      De forma predeterminada, este método no hace nada. Si selecciona una pantalla de presentación para la aplicación en el Diseñador de proyectos de Visual Basic, el diseñador invalida el método OnCreateSplashScreen con un método que establece la propiedad SplashScreen en una nueva instancia del formulario de pantalla de presentación.

  2. OnStartup. Proporciona un punto de extensibilidad para generar el evento Startup. La secuencia de inicio de la aplicación se detiene si esta función devuelve False.

    De forma predeterminada, este método genera el evento Startup. Si el controlador de eventos establece la propiedad Cancel del argumento de evento en True, el método devuelve False para cancelar el inicio de la aplicación.

  3. OnRun. Proporciona el punto de partida para cuando la aplicación principal está lista para comenzar a ejecutarse, una vez finalizada la inicialización.

    De forma predeterminada, antes de entrar en el bucle de mensajes de Windows Forms, este método llama a los métodos OnCreateMainForm (para crear el formulario principal de la aplicación) y HideSplashScreen (para cerrar la pantalla de presentación):

    1. OnCreateMainForm. Proporciona una alternativa para que un diseñador emita código que inicialice el formulario principal.

      De forma predeterminada, este método no hace nada. Sin embargo, si se selecciona un formulario principal para la aplicación en el Diseñador de proyectos de Visual Basic, el diseñador reemplaza el método OnCreateMainForm por un método que establece la propiedad MainForm en una nueva instancia del formulario principal.

    2. HideSplashScreen. Si la aplicación tiene una pantalla de presentación definida y está abierta, este método cierra la pantalla de presentación.

      De forma predeterminada, este método cierra la pantalla de presentación.

  4. OnStartupNextInstance. Proporciona una manera de personalizar el comportamiento de una aplicación de una sola instancia cuando se inicia otra instancia de la aplicación.

    De forma predeterminada, este método genera el evento StartupNextInstance.

  5. OnShutdown. Proporciona un punto de extensibilidad para generar el evento Shutdown. Este método no se ejecuta si se produce una excepción no controlada en la aplicación principal.

    De forma predeterminada, este método genera el evento Shutdown.

  6. OnUnhandledException. Se ejecuta si se produce una excepción no controlada en cualquiera de los métodos enumerados anteriormente.

    De forma predeterminada, este método genera el evento UnhandledException siempre que no se adjunte un depurador y la aplicación controle el evento UnhandledException.

Si se trata de una aplicación de instancia única y la aplicación ya se está ejecutando, la instancia subsiguiente de la aplicación llama al método OnStartupNextInstance en la instancia original de la aplicación y, posteriormente, se cierra.

El constructor OnStartupNextInstance(StartupNextInstanceEventArgs) llama a la propiedad UseCompatibleTextRendering para determinar qué motor de representación de texto se va a utilizar para los formularios de la aplicación. De forma predeterminada, la propiedad UseCompatibleTextRendering devuelve False, que indica que se utilizará el motor de representación de texto GDI, que es el valor predeterminado en Visual Basic 2005 y versiones posteriores. Puede reemplazar la propiedad UseCompatibleTextRendering para que devuelva True, que indica que se utilizará el motor de representación de texto GDI+, que es el valor predeterminado en Visual Basic .NET 2002 y Visual Basic .NET 2003.

Configuración de la aplicación

Como parte del modelo de aplicación de Visual Basic, la clase WindowsFormsApplicationBase proporciona propiedades protegidas que configuran la aplicación. Estas propiedades se deben establecer en el constructor de la clase de implementación.

En un proyecto de Windows Forms predeterminado, el Diseñador de proyectos crea código para establecer las propiedades con la configuración del diseñador. Las propiedades solo se usan cuando se inicia la aplicación; su configuración después de que se inicie la aplicación no tiene ningún efecto.

Propiedad. Determina Configuración en el panel Aplicación del Diseñador de proyectos
IsSingleInstance Si la aplicación se ejecuta como una aplicación de instancia única o de varias instancias. Casilla de verificación Crear aplicación de instancia única
EnableVisualStyles Si la aplicación va a usar estilos visuales que coincidan con Windows XP. Casilla de verificación Habilitar estilos visuales de XP
SaveMySettingsOnExit Si la aplicación guarda automáticamente los cambios de configuración de usuario de la aplicación cuando se cierra la aplicación. Casilla de verificación Guardar My.Settings al apagar
ShutdownStyle Qué es lo que hace que la aplicación finalice, por ejemplo, cuando el formulario de inicio se cierra o cuando se cierra el último formulario. Lista Modo de apagado

Vea también