Ampliar el modelo de la aplicación de Visual Basic

Actualización: noviembre 2007

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

Información general visual del modelo de la aplicación

Esta sección presenta visualmente la secuencia de llamadas a funciones en el Modelo de aplicaciones de Visual Basic. La sección siguiente describe en detalle el propósito de cada función.

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

El Modelo de aplicaciones de Visual Basic también proporciona los eventos StartupNextInstance y UnhandledException. Los gráficos siguientes muestran el mecanismo para provocar estos eventos.

Reemplazar los métodos base

El método My.Application.Run (Método) define el orden en que se ejecutan los métodos de la Application. De manera predeterminada, el procedimiento Sub Main de una aplicación de Windows Forms llama al método Run.

Si la aplicación es normal (una aplicación con varias instancias) o es la primera instancia de una aplicación de instancia única, 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 y de presentación de texto, y el principal actual del subproceso principal de la aplicación (si ésta utiliza autenticación de Windows), y llama a ShowSplashScreen si no se utilizan los modificadores /nosplash o -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 inicio definida y, en tal caso, muestra la pantalla de inicio en un subproceso independiente.

      El método ShowSplashScreen contiene el código que muestra la pantalla de inicio para, al menos, el número de milisegundos especificado por la propiedad MinimumSplashScreenDisplayTime. Para utilizar esta funcionalidad, hay que agregar la pantalla de inicio 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 al método OnInitialize u OnCreateSplashScreen. Para obtener más información, vea My.Application.MinimumSplashScreenDisplayTime (Propiedad).

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

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

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

    De manera predeterminada, este método provoca 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 inicial en el que la aplicación principal está lista para iniciar la ejecución, una vez realizada la inicialización.

    De forma predeterminada, antes de entrar en el bucle del mensaje de formularios 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 inicio):

    1. OnCreateMainForm. Proporciona a un diseñador una manera de emitir código que inicializa el formulario principal.

      De forma predeterminada, este método no hace nada. Sin embargo, cuando se selecciona una pantalla de inicio 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 inicio definida y está abierta, este método cierra la pantalla de inicio.

      De manera predeterminada, este método cierra la pantalla de inicio.

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

    De manera predeterminada, este método provoca el evento StartupNextInstance.

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

    De manera predeterminada, este método provoca el evento Shutdown.

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

    De manera predeterminada, este método provoca el evento UnhandledException si no hay un depurador conectado y la aplicación está controlando el evento UnhandledException.

Si la aplicación es de instancia única y ya está en ejecución, la siguiente instancia de la aplicación llama al método OnStartupNextInstance en la instancia original de la aplicación y, después, finaliza.

El constructor WindowsFormsApplicationBase llama a la propiedad UseCompatibleTextRendering para determinar qué motor de representación de texto se debe utilizar para los formularios de la aplicación. De forma predeterminada, la propiedad UseCompatibleTextRendering devuelve False, indicando que se utilice motor de representación de texto GDI, que es el valor predeterminado en Visual Basic 2005. Puede reemplazar la propiedad UseCompatibleTextRendering para que devuelva True, lo que indica que se debe usar el motor de representación de texto GDI+, que es la configuración predeterminada en Visual Basic .NET 2002 y Visual Basic .NET 2003.

Configurar la aplicación

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

En un proyecto predeterminado de formularios Windows Forms, el Diseñador de proyectos crea el código para establecer las propiedades con la configuración del diseñador. Las propiedades sólo se utilizan cuando la aplicación está iniciándose; establecerlas después de que se inicia la aplicación no tiene ningún efecto.

Propiedad

Determina

Establecer con el Diseñador de proyectos

IsSingleInstance

Si la aplicación se ejecuta como una instancia única o una aplicación de varias instancias.

Cómo: Especificar el comportamiento de las instancias para una aplicación (Visual Basic)

EnableVisualStyles

Si la aplicación utilizará los estilos visuales de XP.

Cómo: Habilitar estilos visuales (Visual Basic)

SaveMySettingsOnExit

Si la aplicación guarda automáticamente los cambios en la configuración del usuario de la aplicación cuando finaliza.

Active la casilla de verificación Guardar My.Settings al cerrar en el panel Aplicación del Diseñador de proyectos.

ShutdownStyle

Lo que hace que la aplicación finalice, por ejemplo cuando se cierra el formulario principal o cuando se cierran todos los formularios.

Cómo: Especificar el comportamiento de cierre de una aplicación (Visual Basic)

Vea también

Conceptos

Información general sobre el modelo de aplicaciones de Visual Basic

Referencia

My.Application (Objeto)

My.Application.Startup (Evento)

My.Application.StartupNextInstance (Evento)

My.Application.UnhandledException (Evento)

My.Application.Shutdown (Evento)

My.Application.NetworkAvailabilityChanged (Evento)

WindowsFormsApplicationBase