Ampliar el modelo de la aplicación de Visual BasicExtending the Visual Basic Application Model

Puede agregar funcionalidad al modelo de aplicación reemplazando los miembros Overridable de la clase WindowsFormsApplicationBase.You can add functionality to the application model by overriding the Overridable members of the WindowsFormsApplicationBase class. 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.This technique allows you to customize the behavior of the application model and add calls to your own methods as the application starts up and shuts down.

Introducción visual al modelo de la aplicaciónVisual Overview of the Application Model

En esta sección se presenta visualmente la secuencia de llamada a función en el modelo de la aplicación de Visual Basic.This section visually presents the sequence of function calls in the Visual Basic Application Model. En la siguiente sección se describe detalladamente el objetivo de cada función.The next section describes the purpose of each function in detail.

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.The following graphic shows the application model call sequence in a normal Visual Basic Windows Forms application. La secuencia se inicia cuando el procedimiento Sub Main llama al método Run.The sequence starts when the Sub Main procedure calls the Run method.

Diagrama que muestra la secuencia de llamadas del modelo de la aplicación.

El modelo de la aplicación de Visual Basic también proporciona los eventos StartupNextInstance y UnhandledException.The Visual Basic Application Model also provides the StartupNextInstance and UnhandledException events. Los gráficos siguientes muestran el mecanismo para generar estos eventos.The following graphics show the mechanism for raising these events.

Diagrama que muestra el método OnStartupNextInstance que genera el evento StartupNextInstance.

Diagrama que muestra el método OnUnhandledException que genera el evento UnhandledException.

Reemplazo de los métodos baseOverriding the Base Methods

El método Run define el orden en el que se ejecutan los métodos Application.The Run method defines the order in which the Application methods run. De forma predeterminada, el procedimiento Sub Main para una aplicación Windows Forms llama al método Run.By default, the Sub Main procedure for a Windows Forms application calls the Run method.

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:If the application is a normal application (multiple-instance application), or the first instance of a single-instance application, the Run method executes the Overridable methods in the following order:

  1. OnInitialize.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.By default, this method sets the visual styles, text display styles, and current principal for the main application thread (if the application uses Windows authentication), and calls ShowSplashScreen if neither /nosplash nor -nosplash is used as a command-line argument.

    La secuencia de inicio de la aplicación se cancela si esta función devuelve False.The application startup sequence is canceled if this function returns False. Esto puede ser útil si hay circunstancias en las que la aplicación no se debe ejecutar.This can be useful if there are circumstances in which the application should not run.

    El método OnInitialize llama a los métodos siguientes:The OnInitialize method calls the following methods:

    1. ShowSplashScreen.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.Determines if the application has a splash screen defined and if it does, displays the splash screen on a separate thread.

      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.The ShowSplashScreen method contains the code that displays the splash screen for at least the number of milliseconds specified by the MinimumSplashScreenDisplayTime property. 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.To use this functionality, you must add the splash screen to your application using the Project Designer (which sets the My.Application.MinimumSplashScreenDisplayTime property to two seconds), or set the My.Application.MinimumSplashScreenDisplayTime property in a method that overrides the OnInitialize or OnCreateSplashScreen method. Para obtener más información, vea MinimumSplashScreenDisplayTime.For more information, see MinimumSplashScreenDisplayTime.

    2. OnCreateSplashScreen.OnCreateSplashScreen. Permite a un diseñador emitir código que inicializa la pantalla de presentación.Allows a designer to emit code that initializes the splash screen.

      De forma predeterminada, este método no hace nada.By default, this method does nothing. 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.If you select a splash screen for your application in the Visual Basic Project Designer, the designer overrides the OnCreateSplashScreen method with a method that sets the SplashScreen property to a new instance of the splash-screen form.

  2. OnStartup.OnStartup. Proporciona un punto de extensibilidad para generar el evento Startup.Provides an extensibility point for raising the Startup event. La secuencia de inicio de la aplicación se detiene si esta función devuelve False.The application startup sequence stops if this function returns False.

    De forma predeterminada, este método genera el evento Startup.By default, this method raises the Startup event. 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.If the event handler sets the Cancel property of the event argument to True, the method returns False to cancel the application startup.

  3. OnRun.OnRun. Proporciona el punto de partida para cuando la aplicación principal está lista para comenzar a ejecutarse, una vez finalizada la inicialización.Provides the starting point for when the main application is ready to start running, after the initialization is done.

    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):By default, before it enters the Windows Forms message loop, this method calls the OnCreateMainForm (to create the application's main form) and HideSplashScreen (to close the splash screen) methods:

    1. OnCreateMainForm.OnCreateMainForm. Proporciona una alternativa para que un diseñador emita código que inicialice el formulario principal.Provides a way for a designer to emit code that initializes the main form.

      De forma predeterminada, este método no hace nada.By default, this method does nothing. 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.However, when you select a main form for your application in the Visual Basic Project Designer, the designer overrides the OnCreateMainForm method with a method that sets the MainForm property to a new instance of the main form.

    2. HideSplashScreen.HideSplashScreen. Si la aplicación tiene una pantalla de presentación definida y está abierta, este método cierra la pantalla de presentación.If application has a splash screen defined and it is open, this method closes the splash screen.

      De forma predeterminada, este método cierra la pantalla de presentación.By default, this method closes the splash screen.

  4. OnStartupNextInstance.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.Provides a way to customize how a single-instance application behaves when another instance of the application starts.

    De forma predeterminada, este método genera el evento StartupNextInstance.By default, this method raises the StartupNextInstance event.

  5. OnShutdown.OnShutdown. Proporciona un punto de extensibilidad para generar el evento Shutdown.Provides an extensibility point for raising the Shutdown event. Este método no se ejecuta si se produce una excepción no controlada en la aplicación principal.This method does not run if an unhandled exception occurs in the main application.

    De forma predeterminada, este método genera el evento Shutdown.By default, this method raises the Shutdown event.

  6. OnUnhandledException.OnUnhandledException. Se ejecuta si se produce una excepción no controlada en cualquiera de los métodos enumerados anteriormente.Executed if an unhandled exception occurs in any of the above listed methods.

    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.By default, this method raises the UnhandledException event as long as a debugger is not attached and the application is handling the UnhandledException event.

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.If the application is a single-instance application, and the application is already running, the subsequent instance of the application calls the OnStartupNextInstance method on the original instance of the application, and then exits.

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.The OnStartupNextInstance(StartupNextInstanceEventArgs) constructor calls the UseCompatibleTextRendering property to determine which text rendering engine to use for the application's forms. 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.By default, the UseCompatibleTextRendering property returns False, indicating that the GDI text rendering engine be used, which is the default in Visual Basic 2005 and later versions. 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.You can override the UseCompatibleTextRendering property to return True, which indicates that the GDI+ text rendering engine be used, which is the default in Visual Basic .NET 2002 and Visual Basic .NET 2003.

Configuración de la aplicaciónConfiguring the Application

Como parte del modelo de aplicación de Visual Basic, la clase WindowsFormsApplicationBase proporciona propiedades protegidas que configuran la aplicación.As a part of the Visual Basic Application model, the WindowsFormsApplicationBase class provides protected properties that configure the application. Estas propiedades se deben establecer en el constructor de la clase de implementación.These properties should be set in the constructor of the implementing class.

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.In a default Windows Forms project, the Project Designer creates code to set the properties with the designer settings. 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.The properties are used only when the application is starting; setting them after the application starts has no effect.

Propiedad.Property DeterminaDetermines Opción del panel Aplicación del Diseñador de proyectosSetting in the Application pane of the Project Designer
IsSingleInstance Si la aplicación se ejecuta como una aplicación de instancia única o de varias instancias.Whether the application runs as a single-instance or multiple-instance application. Casilla de verificación Crear aplicación de instancia únicaMake single instance application check box
EnableVisualStyles Si la aplicación va a usar estilos visuales que coincidan con Windows XP.If the application will use visual styles that match Windows XP. Casilla de verificación Habilitar estilos visuales de XPEnable XP visual styles check box
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.If application automatically saves application's user-settings changes when the application exits. Casilla de verificación Guardar My.Settings al apagarSave My.Settings on Shutdown check box
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.What causes the application to terminate, such as when the startup form closes or when the last form closes. Lista Modo de apagadoShutdown mode list

Vea tambiénSee also