Estensione del modello di applicazione Visual Basic

È possibile aggiungere funzionalità al modello applicativo eseguendo l'override dei membri Overridable della classe WindowsFormsApplicationBase. Questa tecnica consente di personalizzare il comportamento del modello applicativo e di aggiungere chiamate ai propri metodi durante l'avvio e l'arresto dell'applicazione.

Panoramica visiva del modello applicativo

Questa sezione presenta visivamente la sequenza di chiamate di funzione nel modello applicativo di Visual Basic. La sezione successiva descrive in dettaglio lo scopo di ogni funzione.

L'immagine seguente mostra la sequenza di chiamate del modello applicativo in una normale Windows Forms Application di Visual Basic. La sequenza inizia quando la routine Sub Main chiama il metodo Run.

Diagram showing the Application Model call sequence.

Il modello applicativo di Visual Basic fornisce anche gli eventi StartupNextInstance e UnhandledException. La grafica seguente illustra il meccanismo per generare questi eventi.

Diagram showing the OnStartupNextInstance method raising the StartupNextInstance event.

Diagram showing the OnUnhandledException method raising the UnhandledException event.

Override dei metodi di base

Il metodo Run definisce l'ordine in cui vengono eseguiti i metodi Application. Per impostazione predefinita, la routine Sub Main per una Windows Forms Application chiama il metodo Run.

Se l'applicazione è una normale applicazione (applicazione a istanza multipla) o la prima istanza di un'applicazione a istanza singola, il metodo Run esegue i metodi Overridable nell'ordine seguente:

  1. OnInitialize. Per impostazione predefinita, questo metodo imposta gli stili di visualizzazione, gli stili di visualizzazione del testo e l'entità di sicurezza corrente per il thread dell'applicazione principale (se l'applicazione usa l'autenticazione di Windows) e chiama ShowSplashScreen se /nosplash o -nosplash non vengono usati come argomento della riga di comando.

    La sequenza di avvio dell'applicazione viene annullata se questa funzione restituisce False. Ciò può essere utile se ci sono circostanze in cui l'applicazione non deve essere eseguita.

    Il metodo OnInitialize chiama i metodi seguenti:

    1. ShowSplashScreen. Determina se l'applicazione ha una schermata iniziale definita e, in caso affermativo, visualizza la schermata iniziale in un thread separato.

      Il metodo ShowSplashScreen contiene il codice che visualizza la schermata iniziale per almeno il numero di millisecondi specificato dalla proprietà MinimumSplashScreenDisplayTime. Per usare questa funzionalità, è necessario aggiungere la schermata iniziale all'applicazione usando Creazione progetti (che imposta la proprietà My.Application.MinimumSplashScreenDisplayTime su due secondi) oppure impostare la proprietà My.Application.MinimumSplashScreenDisplayTime in un metodo che esegue l'override del metodo OnInitialize o OnCreateSplashScreen. Per ulteriori informazioni, vedere MinimumSplashScreenDisplayTime.

    2. OnCreateSplashScreen. Consente a una finestra di progettazione di generare il codice che inizializza la schermata iniziale.

      Per impostazione predefinita, questo metodo non effettua alcuna operazione. Se si seleziona una schermata iniziale per l'applicazione in Creazione progetti di Visual Basic, la finestra di progettazione esegue l'override del metodo OnCreateSplashScreen con un metodo che imposta la proprietà SplashScreen su una nuova istanza del modulo della schermata iniziale.

  2. OnStartup. Fornisce un punto di estendibilità per generare l'evento Startup. La sequenza di avvio dell'applicazione si arresta se questa funzione restituisce False.

    Per impostazione predefinita, questo metodo genera l'evento Startup. Se il gestore dell'evento imposta la proprietà Cancel dell'argomento dell'evento su True, il metodo restituisce False per annullare l'avvio dell'applicazione.

  3. OnRun. Fornisce il punto di partenza per il momento in cui l'applicazione principale è pronta per l'avvio dell'esecuzione, al termine dell'inizializzazione.

    Per impostazione predefinita, prima di immettere il ciclo di messaggi di Windows Form, questo metodo chiama i metodi OnCreateMainForm (per creare il modulo principale dell'applicazione) e HideSplashScreen (per chiudere la schermata iniziale):

    1. OnCreateMainForm. Consente a una finestra di progettazione di generare il codice che inizializza il form principale.

      Per impostazione predefinita, questo metodo non effettua alcuna operazione. Quando, tuttavia, si seleziona un modulo principale per l'applicazione in Creazione progetti di Visual Basic, la finestra di progettazione esegue l'override del metodo OnCreateMainForm con un metodo che imposta la proprietà MainForm su una nuova istanza del modulo principale.

    2. HideSplashScreen. Se nell'applicazione è definita una schermata iniziale che è aperta, questo metodo chiude la schermata iniziale.

      Per impostazione predefinita, questo metodo chiude la schermata iniziale.

  4. OnStartupNextInstance. Consente di personalizzare il comportamento di un'applicazione a istanza singola all'avvio di un'altra istanza dell'applicazione.

    Per impostazione predefinita, questo metodo genera l'evento StartupNextInstance.

  5. OnShutdown. Fornisce un punto di estendibilità per generare l'evento Shutdown. Questo metodo non viene eseguito se si verifica un'eccezione non gestita nell'applicazione principale.

    Per impostazione predefinita, questo metodo genera l'evento Shutdown.

  6. OnUnhandledException. Viene eseguita se si verifica un'eccezione non gestita in uno dei metodi elencati in precedenza.

    Per impostazione predefinita, questo metodo genera l'evento UnhandledException finché un debugger non viene collegato e l'applicazione gestisce l'evento UnhandledException.

Se l'applicazione è un'applicazione a istanza singola ed è già in esecuzione, l'istanza successiva dell'applicazione chiama il metodo OnStartupNextInstance sull'istanza originale dell'applicazione e poi termina.

Il costruttore OnStartupNextInstance(StartupNextInstanceEventArgs) chiama la proprietà UseCompatibleTextRendering per determinare quale motore di rendering del testo utilizzare per i moduli dell'applicazione. Per impostazione predefinita, la proprietà UseCompatibleTextRendering restituisce False, che indica che viene utilizzato il motore di rendering del testo GDI, ovvero l'impostazione predefinita in Visual Basic 2005 e nelle versioni successive. È possibile eseguire l'override della proprietà UseCompatibleTextRendering per restituire True, che indica che viene usato il motore di rendering del testo GDI+, ovvero l'impostazione predefinita in Visual Basic .NET 2002 e Visual Basic .NET 2003.

Configurazione dell'applicazione

Come parte del modello applicativo di Visual Basic, la classe WindowsFormsApplicationBase fornisce proprietà protette che configurano l'applicazione. Queste proprietà devono essere impostate nel costruttore della classe di implementazione.

In un progetto predefinito di Windows Form, Creazione progetti crea il codice per impostare le proprietà con le impostazioni della finestra di progettazione. Le proprietà vengono usate solo all'avvio dell'applicazione; impostarli dopo l'avvio dell'applicazione non ha alcun effetto.

Proprietà Determina Impostazione nel riquadro Applicazione di Creazione progetti
IsSingleInstance Se l'applicazione viene eseguita come applicazione a istanza singola o a istanza multipla. Casella di controllo Rendi a istanza singola
EnableVisualStyles Se l'applicazione userà stili di visualizzazione che corrispondono a Windows XP. Casella di controllo Abilita stili di visualizzazione XP
SaveMySettingsOnExit Se l'applicazione salva automaticamente le impostazioni utente dell'applicazione cambia quando l'applicazione viene chiusa. Casella di controllo Salva My.Settings alla chiusura
ShutdownStyle Ciò che fa sì che l'applicazione termini, ad esempio quando il modulo di avvio viene chiuso o quando l'ultimo modulo viene chiuso. Elenco Modalità di arresto

Vedi anche