Erweitern des Visual Basic-Anwendungsmodells

Sie können dem Anwendungsmodell Funktionen hinzufügen, indem Sie die Overridable-Member der WindowsFormsApplicationBase-Klasse überschreiben. Diese Technik ermöglicht es Ihnen, das Verhalten des Anwendungsmodells anzupassen und Aufrufe für Ihre eigenen Methoden hinzuzufügen, wenn die Anwendung gestartet und beendet wird.

Visuelle Übersicht über das Anwendungsmodell

In diesem Abschnitt wird die Sequenz von Funktionsaufrufen im Visual Basic-Anwendungsmodell visuell dargestellt. Im nächsten Abschnitt werden die Zwecke der einzelnen Funktionen im Detail erläutert.

Auf der folgenden Abbildung sehen Sie die Aufrufsequenz des Anwendungsmodells in einer normalen Windows Forms-Anwendung in Visual Basic. Die Sequenz beginnt, wenn die Sub Main-Prozedur die Run-Methode aufruft.

Diagram showing the Application Model call sequence.

Das Anwendungsmodell in Visual Basic stellt auch StartupNextInstance- und UnhandledException-Ereignisse bereit. In der folgenden Abbildung sehen Sie die Mechanismen, die für das Auslösen dieser Ereignisse verantwortlich sind.

Diagram showing the OnStartupNextInstance method raising the StartupNextInstance event.

Diagram showing the OnUnhandledException method raising the UnhandledException event.

Überschreiben der Basismethoden

Die Run-Methode definiert die Reihenfolge, in der die Application-Methoden ausgeführt werden. Standardmäßig ruft die Sub Main-Prozedur für eine Windows Forms-Anwendung die Run-Methode auf.

Wenn es sich bei der Anwendung um eine normale Anwendung (Anwendung mit mehreren Instanzen) handelt oder um die erste Instanz einer Einzelinstanzanwendung, führt die Run-Methode die Overridable-Methoden in der folgenden Reihenfolge aus:

  1. OnInitialize. Standardmäßig legt diese Methode die visuellen Stile, die Textanzeigestile und den aktuellen Prinzipal für den Hauptanwendungsthread fest (wenn die Anwendung die Windows-Authentifizierung verwendet) und ruft ShowSplashScreen auf, wenn weder /nosplash noch -nosplash als Befehlszeilenargument verwendet werden.

    Die Anwendungsstartsequenz wird abgebrochen, wenn diese Funktion False zurückgibt. Dies kann hilfreich sein, wenn es Umstände gibt, in denen die Anwendung nicht ausgeführt werden sollte.

    Die OnInitialize-Methode ruft die folgenden Methoden auf:

    1. ShowSplashScreen. Bestimmt, ob für die Anwendung ein Begrüßungsbildschirm definiert ist. Ist dies der Fall, wird der Begrüßungsbildschirm auf einem separaten Thread angezeigt.

      Die ShowSplashScreen-Methode enthält den Code, der den Begrüßungsbildschirm mindestens für die Dauer an Millisekunden anzeigt, die von der MinimumSplashScreenDisplayTime-Eigenschaft angegeben werden. Zur Verwendung dieser Funktion müssen Sie den Begrüßungsbildschirm Ihrer Anwendung mithilfe des Projekt-Designers hinzufügen (wodurch die My.Application.MinimumSplashScreenDisplayTime-Eigenschaft auf zwei Sekunden festgelegt wird) oder die My.Application.MinimumSplashScreenDisplayTime-Eigenschaft in einer Methode festlegen, die die OnInitialize- oder OnCreateSplashScreen-Methode überschreibt. Weitere Informationen finden Sie unter MinimumSplashScreenDisplayTime.

    2. OnCreateSplashScreen. Ermöglicht einem Designer, Code auszugeben, der den Begrüßungsbildschirm initialisiert.

      Standardmäßig hat diese Methode keine Auswirkungen. Wenn Sie einen Begrüßungsbildschirm für Ihre Anwendung im Projekt-Designer in Visual Basic auswählen, überschreibt der Designer die OnCreateSplashScreen-Methode mit einer Methode, die die SplashScreen-Eigenschaft auf eine neue Instanz des Begrüßungsbildschirmformulars festlegt.

  2. OnStartup. Stellt einen Erweiterungspunkt für das Auslösen des Startup-Ereignisses bereit. Die Anwendungsstartsequenz wird angehalten, wenn diese Funktion False zurückgibt.

    Standardmäßig löst diese Methode das Startup-Ereignis aus. Wenn der Ereignishandler die Cancel-Eigenschaft des Ereignisarguments auf True festlegt, gibt die Methode False zurück, um den Anwendungsstart abzubrechen.

  3. OnRun. Stellt den Startpunkt bereit, wenn die Ausführung der Hauptanwendung begonnen werden kann, nachdem die Initialisierung abgeschlossen ist.

    Standardmäßig ruft diese Methode die Methoden OnCreateMainForm (um das Hauptformular der Anwendung zu erstellen) und HideSplashScreen (um den Begrüßungsbildschirm zu schließen) auf, bevor sie die Windows Forms-Nachrichtenschleife startet:

    1. OnCreateMainForm. Stellt eine Möglichkeit für Designer bereit, Code auszugeben, der das Hauptformular initialisiert.

      Standardmäßig hat diese Methode keine Auswirkungen. Wenn Sie jedoch ein Hauptformular für Ihre Anwendung im Projekt-Designer in Visual Basic auswählen, überschreibt der Designer die OnCreateMainForm-Methode mit einer Methode, die die MainForm-Eigenschaft auf eine neue Instanz des Hauptformulars festlegt.

    2. HideSplashScreen. Wenn für die Anwendung ein Begrüßungsbildschirm definiert ist und er geöffnet ist, schließt diese Methode den Begrüßungsbildschirm.

      Standardmäßig schließt diese Methode den Begrüßungsbildschirm.

  4. OnStartupNextInstance. Stellt eine Möglichkeit bereit, anzupassen, wie sich eine Einzelinstanzanwendung verhält, wenn eine andere Instanz der Anwendung gestartet wird.

    Standardmäßig löst diese Methode das StartupNextInstance-Ereignis aus.

  5. OnShutdown. Stellt einen Erweiterungspunkt für das Auslösen des Shutdown-Ereignisses bereit. Diese Methode wird nicht ausgeführt, wenn ein Ausnahmefehler in der Hauptanwendung auftritt.

    Standardmäßig löst diese Methode das Shutdown-Ereignis aus.

  6. OnUnhandledException. Wird ausgeführt, wenn ein Ausnahmefehler in einer der oben aufgeführten Methoden auftritt.

    Standardmäßig löst diese Methode das UnhandledException-Ereignis aus, solange der Debugger nicht angefügt ist und die Anwendung das UnhandledException-Ereignis behandelt.

Wenn es sich bei der Anwendung um eine Einzelinstanzanwendung handelt und die Anwendung bereits ausgeführt wird, ruft die anschließende Instanz der Anwendung die OnStartupNextInstance-Methode auf der ursprünglichen Instanz der Anwendung auf und wird dann beendet.

Der OnStartupNextInstance(StartupNextInstanceEventArgs)-Konstruktor ruft die UseCompatibleTextRendering-Eigenschaft auf, um zu bestimmen, welche Textrendering-Engine für die Formulare der Anwendung verwendet werden soll. Standardmäßig gibt die UseCompatibleTextRendering-Eigenschaft False zurück, was darauf hinweist, dass die GDI-Textrendering-Engine verwendet werden soll. Dabei handelt es sich um den Standardwert für Visual Basic 2005 und höhere Versionen. Sie können die UseCompatibleTextRendering-Eigenschaft überschreiben, damit True zurückgegeben wird, was darauf hinweist, dass die GDI+-Textrendering-Engine verwendet werden soll. Dabei handelt es sich um den Standardwert für Visual Basic .NET 2002 und Visual Basic .NET 2003.

Konfigurieren der Anwendung

Als Teil des Anwendungsmodells in Visual Basic stellt die WindowsFormsApplicationBase-Klasse geschützte Eigenschaften bereit, die die Anwendung konfigurieren. Diese Eigenschaften sollten im Konstruktor der implementierenden Klasse festgelegt werden.

In einem Windows Forms-Standardprojekt erstellt der Projekt-Designer Code, um die Eigenschaften mit den Einstellungen des Designers festzulegen. Die Eigenschaften werden nur verwendet, wenn die Anwendung gestartet wird. Wenn sie festgelegt werden, nachdem die Anwendung gestartet wurde, hat dies keine Auswirkungen.

Eigenschaft Bestimmt… Einstellung im Anwendungsbereich des Projekt-Designers
IsSingleInstance … ob die Anwendung als Einzelinstanzanwendung oder Anwendung mit mehreren Instanzen ausgeführt wird. Kontrollkästchen Einzelinstanzanwendung erstellen
EnableVisualStyles … ob die Anwendung visuelle Stile verwendet, die denen von Windows entsprechen. Kontrollkästchen Visuelle XP-Stile aktivieren
SaveMySettingsOnExit … ob die Anwendung automatisch die Änderungen an Benutzereinstellungen speichert, wenn die Anwendung beendet wird. Kontrollkästchen My.Settings beim Herunterfahren speichern
ShutdownStyle … was dazu führt, dass die Anwendung beendet wird, z. B. wenn das Startformular geschlossen wird oder das letzte Formular geschlossen wird. Liste Modus für das Herunterfahren

Siehe auch