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

Вы можете добавлять функции в модель приложения, переопределяя элементы Overridable класса WindowsFormsApplicationBase. Такой подход позволяет настраивать поведение модели приложения и добавлять вызовы собственных методов при запуске и (или) завершении приложения.

Визуальный обзор модели приложения

В этом разделе отображается визуальное представление последовательности вызовов функций в модели приложения Visual Basic. Назначение каждой функции подробно описывается в следующем разделе.

На следующем рисунке показана последовательность вызовов в модели приложения для стандартного приложения Windows Forms на Visual Basic. Эта последовательность начинается, когда процедура Sub Main вызывает метод Run.

Diagram showing the Application Model call sequence.

Модель приложения Visual Basic также поддерживает события StartupNextInstance и UnhandledException. На следующем рисунке представлен механизм вызова этих событий.

Diagram showing the OnStartupNextInstance method raising the StartupNextInstance event.

Diagram showing the OnUnhandledException method raising the UnhandledException event.

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

Метод Run определяет порядок, в котором выполняются методы Application. По умолчанию процедура Sub Main в приложении Windows Forms вызывает метод Run.

Если это обычное приложение (с несколькими экземплярами) или главный экземпляр приложения с одним экземпляром, метод Run выполняет методы Overridable в следующем порядке:

  1. OnInitialize. По умолчанию этот метод определяет визуальные стили, стили отображения текста и текущего субъекта для основного потока приложения (если приложение использует проверку подлинности Windows), а также вызывает ShowSplashScreen, если в командной строке не указаны аргументы /nosplash или -nosplash.

    Если эта функция возвращает False, последовательность запуска приложения отменяется. Это полезно в случаях, когда приложение не должно выполняться.

    Метод OnInitialize вызывает следующие методы.

    1. ShowSplashScreen. Определяет, настроен ли для предложения экран-заставка, и если да, то выводит его в отдельном потоке.

      Метод ShowSplashScreen содержит код для отображения экрана-заставки в течение по меньшей мере того числа миллисекунд, которое задано в свойстве MinimumSplashScreenDisplayTime. Чтобы использовать эту функцию, необходимо добавить в приложение экран-заставку с помощью конструктора проектов (который задает для свойства My.Application.MinimumSplashScreenDisplayTime значение, соответствующее двум секундам) или задать свойство My.Application.MinimumSplashScreenDisplayTime в методе, который переопределяет метод OnInitialize или OnCreateSplashScreen. Дополнительные сведения см. в разделе MinimumSplashScreenDisplayTime.

    2. OnCreateSplashScreen. Позволяет конструктору создавать код, инициализирующий экран-заставку.

      По умолчанию этот метод не выполняет никаких действий. Если вы выберете для приложения экран-заставку в конструкторе проектов Visual Basic, этот конструктор переопределит метод OnCreateSplashScreen новым методом, который задает для свойства SplashScreen значение нового экземпляра экрана-заставки.

  2. OnStartup. Предоставляет точку расширяемости для активации события Startup. Если эта функция возвращает False, последовательность запуска приложения останавливается.

    По умолчанию этот метод вызывает событие Startup. Если обработчик событий задает для свойства Cancel аргумента события значение True, этот метод возвращает False, чтобы отменить запуск приложения.

  3. OnRun. Предоставляет отправную точку для момента, когда основное приложение будет готово к началу запуска после выполнения инициализации.

    По умолчанию перед входом в цикл обработки сообщений Windows Forms этот метод вызывает методы OnCreateMainForm для создания главной формы приложения и HideSplashScreen для закрытия экрана-заставки:

    1. OnCreateMainForm. Позволяет конструктору создать код, который инициализирует основную форму.

      По умолчанию этот метод не выполняет никаких действий. Но если вы выберете для приложения основную форму в конструкторе проектов Visual Basic, этот конструктор переопределит метод OnCreateMainForm новым методом, который задает для свойства MainForm значение нового экземпляра основной формы.

    2. HideSplashScreen. Если для приложения определен экран-заставка и этот экран открыт, этот метод закрывает экран-заставку.

      По умолчанию этот метод закрывает экран-заставку.

  4. OnStartupNextInstance. Предоставляет способ настроить поведение приложения с одним экземпляром при запуске другого экземпляра того же приложения.

    По умолчанию этот метод вызывает событие StartupNextInstance.

  5. OnShutdown. Предоставляет точку расширяемости для активации события Shutdown. Этот метод не выполняется, если в основном приложении возникает необработанное исключение.

    По умолчанию этот метод вызывает событие Shutdown.

  6. OnUnhandledException. Выполняется, если в любом из перечисленных выше методов возникает необработанное исключение.

    По умолчанию этот метод вызывает событие UnhandledException, если не присоединен отладчик и приложение обрабатывает событие UnhandledException.

Если это приложение с одним экземпляром и оно уже выполняется, любой следующий экземпляр приложения вызывает метод OnStartupNextInstance в исходном экземпляре приложения и завершает свою работу.

Конструктор OnStartupNextInstance(StartupNextInstanceEventArgs) вызывает свойство UseCompatibleTextRendering, чтобы определить, какой механизм визуализации текста нужно использовать для форм приложения. По умолчанию свойство UseCompatibleTextRendering возвращает False, что означает использование механизма отрисовки текста GDI, который применяется по умолчанию в Visual Basic 2005 и более поздних версиях. Вы можете переопределить свойство UseCompatibleTextRendering значением True, что означает использование механизма отрисовки текста GDI+, который используется по умолчанию в Visual Basic .NET 2002 и Visual Basic .NET 2003.

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

Входящий в модель приложения Visual Basic класс WindowsFormsApplicationBase предоставляет защищенные свойства для настройки приложения. Эти свойства следует задавать в конструкторе класса реализации.

В стандартном проекте Windows Forms конструктор проектов создает код для присвоения свойствам значений из этого конструктора. Свойства используются только при запуске приложения, а изменение их значений после запуска не имеет никакого эффекта.

Свойство Определяет Параметр в области приложения в конструкторе проектов
IsSingleInstance Допускает ли это приложение только один или несколько своих экземпляров. Флажок Создать приложение, допускающее выполнение только одного экземпляра
EnableVisualStyles Будет ли приложение использовать визуальные стили для Windows XP. Флажок Включить XP-стили визуального представления
SaveMySettingsOnExit Будет ли приложение автоматически сохранять измененные пользовательские параметры при завершении работы. Флажок Сохранять My.Settings при завершении работы
ShutdownStyle При каких условиях будет завершаться приложение, например при закрытии начальной формы или при закрытии последней формы. Список Режим завершения работы

См. также