Расширение модели приложения Visual BasicExtending the Visual Basic Application Model

Вы можете добавлять функции в модель приложения, переопределяя элементы Overridable класса WindowsFormsApplicationBase.You can add functionality to the application model by overriding the Overridable members of the WindowsFormsApplicationBase class. Такой подход позволяет настраивать поведение модели приложения и добавлять вызовы собственных методов при запуске и (или) завершении приложения.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.

Визуальный обзор модели приложенияVisual Overview of the Application Model

В этом разделе отображается визуальное представление последовательности вызовов функций в модели приложения Visual Basic.This section visually presents the sequence of function calls in the Visual Basic Application Model. Назначение каждой функции подробно описывается в следующем разделе.The next section describes the purpose of each function in detail.

На следующем рисунке показана последовательность вызовов в модели приложения для стандартного приложения Windows Forms на Visual Basic.The following graphic shows the application model call sequence in a normal Visual Basic Windows Forms application. Эта последовательность начинается, когда процедура Sub Main вызывает метод Run.The sequence starts when the Sub Main procedure calls the Run method.

Схема с последовательностью вызовов в модели приложения.

Модель приложения Visual Basic также поддерживает события StartupNextInstance и UnhandledException.The Visual Basic Application Model also provides the StartupNextInstance and UnhandledException events. На следующем рисунке представлен механизм вызова этих событий.The following graphics show the mechanism for raising these events.

Схема, на которой показан вызов события StartupNextInstance из метода OnStartupNextInstance.

Схема, на которой показан вызов события UnhandledException из метода OnUnhandledException.

Переопределение базовых методовOverriding the Base Methods

Метод Run определяет порядок, в котором выполняются методы Application.The Run method defines the order in which the Application methods run. По умолчанию процедура Sub Main в приложении Windows Forms вызывает метод Run.By default, the Sub Main procedure for a Windows Forms application calls the Run method.

Если это обычное приложение (с несколькими экземплярами) или главный экземпляр приложения с одним экземпляром, метод Run выполняет методы Overridable в следующем порядке: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. По умолчанию этот метод определяет визуальные стили, стили отображения текста и текущего субъекта для основного потока приложения (если приложение использует проверку подлинности Windows), а также вызывает ShowSplashScreen, если в командной строке не указаны аргументы /nosplash или -nosplash.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.

    Если эта функция возвращает False, последовательность запуска приложения отменяется.The application startup sequence is canceled if this function returns False. Это полезно в случаях, когда приложение не должно выполняться.This can be useful if there are circumstances in which the application should not run.

    Метод OnInitialize вызывает следующие методы.The OnInitialize method calls the following methods:

    1. ShowSplashScreen.ShowSplashScreen. Определяет, настроен ли для предложения экран-заставка, и если да, то выводит его в отдельном потоке.Determines if the application has a splash screen defined and if it does, displays the splash screen on a separate thread.

      Метод ShowSplashScreen содержит код для отображения экрана-заставки в течение по меньшей мере того числа миллисекунд, которое задано в свойстве MinimumSplashScreenDisplayTime.The ShowSplashScreen method contains the code that displays the splash screen for at least the number of milliseconds specified by the MinimumSplashScreenDisplayTime property. Чтобы использовать эту функцию, необходимо добавить в приложение экран-заставку с помощью конструктора проектов (который задает для свойства My.Application.MinimumSplashScreenDisplayTime значение, соответствующее двум секундам) или задать свойство My.Application.MinimumSplashScreenDisplayTime в методе, который переопределяет метод OnInitialize или 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. Для получения дополнительной информации см. MinimumSplashScreenDisplayTime.For more information, see MinimumSplashScreenDisplayTime.

    2. OnCreateSplashScreen.OnCreateSplashScreen. Позволяет конструктору создавать код, инициализирующий экран-заставку.Allows a designer to emit code that initializes the splash screen.

      По умолчанию этот метод не выполняет никаких действий.By default, this method does nothing. Если вы выберете для приложения экран-заставку в конструкторе проектов Visual Basic, этот конструктор переопределит метод OnCreateSplashScreen новым методом, который задает для свойства SplashScreen значение нового экземпляра экрана-заставки.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. Предоставляет точку расширяемости для активации события Startup.Provides an extensibility point for raising the Startup event. Если эта функция возвращает False, последовательность запуска приложения останавливается.The application startup sequence stops if this function returns False.

    По умолчанию этот метод вызывает событие Startup.By default, this method raises the Startup event. Если обработчик событий задает для свойства Cancel аргумента события значение True, этот метод возвращает False, чтобы отменить запуск приложения.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. Предоставляет отправную точку для момента, когда основное приложение будет готово к началу запуска после выполнения инициализации.Provides the starting point for when the main application is ready to start running, after the initialization is done.

    По умолчанию перед входом в цикл обработки сообщений Windows Forms этот метод вызывает методы OnCreateMainForm для создания главной формы приложения и HideSplashScreen для закрытия экрана-заставки: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. Позволяет конструктору создать код, который инициализирует основную форму.Provides a way for a designer to emit code that initializes the main form.

      По умолчанию этот метод не выполняет никаких действий.By default, this method does nothing. Но если вы выберете для приложения основную форму в конструкторе проектов Visual Basic, этот конструктор переопределит метод OnCreateMainForm новым методом, который задает для свойства MainForm значение нового экземпляра основной формы.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. Если для приложения определен экран-заставка и этот экран открыт, этот метод закрывает экран-заставку.If application has a splash screen defined and it is open, this method closes the splash screen.

      По умолчанию этот метод закрывает экран-заставку.By default, this method closes the splash screen.

  4. OnStartupNextInstance.OnStartupNextInstance. Предоставляет способ настроить поведение приложения с одним экземпляром при запуске другого экземпляра того же приложения.Provides a way to customize how a single-instance application behaves when another instance of the application starts.

    По умолчанию этот метод вызывает событие StartupNextInstance.By default, this method raises the StartupNextInstance event.

  5. OnShutdown.OnShutdown. Предоставляет точку расширяемости для активации события Shutdown.Provides an extensibility point for raising the Shutdown event. Этот метод не выполняется, если в основном приложении возникает необработанное исключение.This method does not run if an unhandled exception occurs in the main application.

    По умолчанию этот метод вызывает событие Shutdown.By default, this method raises the Shutdown event.

  6. OnUnhandledException.OnUnhandledException. Выполняется, если в любом из перечисленных выше методов возникает необработанное исключение.Executed if an unhandled exception occurs in any of the above listed methods.

    По умолчанию этот метод вызывает событие UnhandledException, если не присоединен отладчик и приложение обрабатывает событие 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.

Если это приложение с одним экземпляром и оно уже выполняется, любой следующий экземпляр приложения вызывает метод OnStartupNextInstance в исходном экземпляре приложения и завершает свою работу.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.

Конструктор OnStartupNextInstance(StartupNextInstanceEventArgs) вызывает свойство UseCompatibleTextRendering, чтобы определить, какой механизм визуализации текста нужно использовать для форм приложения.The OnStartupNextInstance(StartupNextInstanceEventArgs) constructor calls the UseCompatibleTextRendering property to determine which text rendering engine to use for the application's forms. По умолчанию свойство UseCompatibleTextRendering возвращает False, что означает использование механизма отрисовки текста GDI, который применяется по умолчанию в Visual Basic 2005 и более поздних версиях.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. Вы можете переопределить свойство UseCompatibleTextRendering значением True, что означает использование механизма отрисовки текста GDI+, который используется по умолчанию в Visual Basic .NET 2002 и 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.

Настройка приложенияConfiguring the Application

Входящий в модель приложения Visual Basic класс WindowsFormsApplicationBase предоставляет защищенные свойства для настройки приложения.As a part of the Visual Basic Application model, the WindowsFormsApplicationBase class provides protected properties that configure the application. Эти свойства следует задавать в конструкторе класса реализации.These properties should be set in the constructor of the implementing class.

В стандартном проекте Windows Forms конструктор проектов создает код для присвоения свойствам значений из этого конструктора.In a default Windows Forms project, the Project Designer creates code to set the properties with the designer settings. Свойства используются только при запуске приложения, а изменение их значений после запуска не имеет никакого эффекта.The properties are used only when the application is starting; setting them after the application starts has no effect.

Свойство.Property ОпределяетDetermines Параметр в области приложения в конструкторе проектовSetting in the Application pane of the Project Designer
IsSingleInstance Допускает ли это приложение только один или несколько своих экземпляров.Whether the application runs as a single-instance or multiple-instance application. Флажок Создать приложение, допускающее выполнение только одного экземпляраMake single instance application check box
EnableVisualStyles Будет ли приложение использовать визуальные стили для Windows XP.If the application will use visual styles that match Windows XP. Флажок Включить XP-стили визуального представленияEnable XP visual styles check box
SaveMySettingsOnExit Будет ли приложение автоматически сохранять измененные пользовательские параметры при завершении работы.If application automatically saves application's user-settings changes when the application exits. Флажок Сохранять My.Settings при завершении работыSave My.Settings on Shutdown check box
ShutdownStyle При каких условиях будет завершаться приложение, например при закрытии начальной формы или при закрытии последней формы.What causes the application to terminate, such as when the startup form closes or when the last form closes. Список Режим завершения работыShutdown mode list

См. такжеSee also