Расширение модели приложения Visual Basic
Вы можете добавлять функции в модель приложения, переопределяя элементы Overridable
класса WindowsFormsApplicationBase. Такой подход позволяет настраивать поведение модели приложения и добавлять вызовы собственных методов при запуске и (или) завершении приложения.
Визуальный обзор модели приложения
В этом разделе отображается визуальное представление последовательности вызовов функций в модели приложения Visual Basic. Назначение каждой функции подробно описывается в следующем разделе.
На следующем рисунке показана последовательность вызовов в модели приложения для стандартного приложения Windows Forms на Visual Basic. Эта последовательность начинается, когда процедура Sub Main
вызывает метод Run.
Модель приложения Visual Basic также поддерживает события StartupNextInstance и UnhandledException. На следующем рисунке представлен механизм вызова этих событий.
Переопределение базовых методов
Метод Run определяет порядок, в котором выполняются методы Application
. По умолчанию процедура Sub Main
в приложении Windows Forms вызывает метод Run.
Если это обычное приложение (с несколькими экземплярами) или главный экземпляр приложения с одним экземпляром, метод Run выполняет методы Overridable
в следующем порядке:
OnInitialize. По умолчанию этот метод определяет визуальные стили, стили отображения текста и текущего субъекта для основного потока приложения (если приложение использует проверку подлинности Windows), а также вызывает
ShowSplashScreen
, если в командной строке не указаны аргументы/nosplash
или-nosplash
.Если эта функция возвращает
False
, последовательность запуска приложения отменяется. Это полезно в случаях, когда приложение не должно выполняться.Метод OnInitialize вызывает следующие методы.
ShowSplashScreen. Определяет, настроен ли для предложения экран-заставка, и если да, то выводит его в отдельном потоке.
Метод ShowSplashScreen содержит код для отображения экрана-заставки в течение по меньшей мере того числа миллисекунд, которое задано в свойстве MinimumSplashScreenDisplayTime. Чтобы использовать эту функцию, необходимо добавить в приложение экран-заставку с помощью конструктора проектов (который задает для свойства
My.Application.MinimumSplashScreenDisplayTime
значение, соответствующее двум секундам) или задать свойствоMy.Application.MinimumSplashScreenDisplayTime
в методе, который переопределяет метод OnInitialize или OnCreateSplashScreen. Дополнительные сведения см. в разделе MinimumSplashScreenDisplayTime.OnCreateSplashScreen. Позволяет конструктору создавать код, инициализирующий экран-заставку.
По умолчанию этот метод не выполняет никаких действий. Если вы выберете для приложения экран-заставку в конструкторе проектов Visual Basic, этот конструктор переопределит метод OnCreateSplashScreen новым методом, который задает для свойства SplashScreen значение нового экземпляра экрана-заставки.
OnStartup. Предоставляет точку расширяемости для активации события
Startup
. Если эта функция возвращаетFalse
, последовательность запуска приложения останавливается.По умолчанию этот метод вызывает событие Startup. Если обработчик событий задает для свойства Cancel аргумента события значение
True
, этот метод возвращаетFalse
, чтобы отменить запуск приложения.OnRun. Предоставляет отправную точку для момента, когда основное приложение будет готово к началу запуска после выполнения инициализации.
По умолчанию перед входом в цикл обработки сообщений Windows Forms этот метод вызывает методы
OnCreateMainForm
для создания главной формы приложения иHideSplashScreen
для закрытия экрана-заставки:OnCreateMainForm. Позволяет конструктору создать код, который инициализирует основную форму.
По умолчанию этот метод не выполняет никаких действий. Но если вы выберете для приложения основную форму в конструкторе проектов Visual Basic, этот конструктор переопределит метод OnCreateMainForm новым методом, который задает для свойства MainForm значение нового экземпляра основной формы.
HideSplashScreen. Если для приложения определен экран-заставка и этот экран открыт, этот метод закрывает экран-заставку.
По умолчанию этот метод закрывает экран-заставку.
OnStartupNextInstance. Предоставляет способ настроить поведение приложения с одним экземпляром при запуске другого экземпляра того же приложения.
По умолчанию этот метод вызывает событие StartupNextInstance.
OnShutdown. Предоставляет точку расширяемости для активации события
Shutdown
. Этот метод не выполняется, если в основном приложении возникает необработанное исключение.По умолчанию этот метод вызывает событие Shutdown.
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 | При каких условиях будет завершаться приложение, например при закрытии начальной формы или при закрытии последней формы. | Список Режим завершения работы |