Estendendo o modelo de aplicativo do Visual Basic

Você pode adicionar funcionalidade ao modelo de aplicativo substituindo os membros Overridable da classe WindowsFormsApplicationBase. Essa técnica permite personalizar o comportamento do modelo de aplicativo e adicionar chamadas aos próprios métodos à medida que o aplicativo é inicializado e desligado.

Visão geral visual do Modelo de Aplicativo

Esta seção apresenta visualmente a sequência de chamadas de função no Modelo de Aplicativo do Visual Basic. A próxima seção descreve a finalidade de cada função em detalhes.

O gráfico a seguir mostra a sequência de chamada do modelo de aplicativo em um aplicativo normal do Windows Forms no Visual Basic. A sequência começa quando o procedimento Sub Main chama o método Run.

Diagram showing the Application Model call sequence.

O modelo de aplicativo do Visual Basic também fornece os eventos StartupNextInstance e UnhandledException. Os gráficos a seguir mostram o mecanismo para gerar esses eventos.

Diagram showing the OnStartupNextInstance method raising the StartupNextInstance event.

Diagram showing the OnUnhandledException method raising the UnhandledException event.

Como substituir os Métodos Base

O método Run define a ordem em que Application são executados. Por padrão, o procedimento Sub Main para um aplicativo do Windows Forms chama o método Run.

Se o aplicativo for normal (aplicativo de várias instâncias) ou a primeira instância de um aplicativo de instância única, o método Run executa Overridable na seguinte ordem:

  1. OnInitialize. Por padrão, esse método define os estilos visuais, os estilos de exibição de texto e o principal atual para o encadeamento do aplicativo principal (se ele usar autenticação do Windows) e chama ShowSplashScreen se nem /nosplash nem -nosplash forem usados como um argumento de linha de comando.

    A sequência de inicialização do aplicativo é cancelada se esta função retornar False. Isso pode ser útil se houver circunstâncias em que o aplicativo não deve ser executado.

    O método OnInitialize chama os seguintes métodos:

    1. ShowSplashScreen. Determina se o aplicativo tem uma tela inicial definida e, se tiver, exibe-a em um thread separado.

      O método ShowSplashScreen contém o código que exibe a tela inicial por, pelo menos, o número de milissegundos especificado pela propriedade MinimumSplashScreenDisplayTime. Para usar essa funcionalidade, você deve adicionar a tela inicial ao aplicativo usando o Designer de Projeto (que define a propriedade My.Application.MinimumSplashScreenDisplayTime como dois segundos) ou definir a propriedade My.Application.MinimumSplashScreenDisplayTime em um método que substitui OnInitialize ou OnCreateSplashScreen. Para obter mais informações, consulte MinimumSplashScreenDisplayTime.

    2. OnCreateSplashScreen. Permite que um designer emita o código que inicializa a tela inicial.

      Por padrão, esse método não faz nada. Se você selecionar uma tela inicial para o aplicativo no Designer de Projeto do Visual Basic, o designer substituirá o método OnCreateSplashScreen por um que defina a propriedade SplashScreen como uma nova instância do formulário de tela inicial.

  2. OnStartup. Fornece um ponto de extensibilidade para gerar o evento Startup. A sequência de inicialização do aplicativo é interrompida se esta função retornar False.

    Por padrão, esse método gera o evento Startup. Se o manipulador de eventos definir a propriedade Cancel do argumento de evento como True, o método retornará False para cancelar a inicialização do aplicativo.

  3. OnRun. Fornece o ponto de partida para quando o aplicativo principal está pronto para começar a ser executado, após a inicialização ser feita.

    Por padrão, antes de entrar no loop de mensagens do Windows Forms, esse método chama OnCreateMainForm (para criar o formulário principal do aplicativo) e HideSplashScreen (para fechar a tela inicial):

    1. OnCreateMainForm. Fornece uma forma para um designer emitir código que inicializa o formulário principal.

      Por padrão, esse método não faz nada. No entanto, quando você seleciona um formulário principal para o aplicativo no Designer de Projeto do Visual Basic, o designer substitui o método OnCreateMainForm por um que defina a propriedade MainForm como uma nova instância do formulário principal.

    2. HideSplashScreen. Se o aplicativo tiver uma tela inicial definida e estiver aberta, ela será fechada por esse método.

      Por padrão, esse método fecha a tela inicial.

  4. OnStartupNextInstance. Fornece uma maneira de personalizar como um aplicativo de instância única se comporta quando outra instância do aplicativo é iniciada.

    Por padrão, esse método gera o evento StartupNextInstance.

  5. OnShutdown. Fornece um ponto de extensibilidade para gerar o evento Shutdown. Este método não será executado se ocorrer uma exceção sem tratamento no aplicativo principal.

    Por padrão, esse método gera o evento Shutdown.

  6. OnUnhandledException. Executado se ocorrer uma exceção sem tratamento em qualquer um dos métodos listados acima.

    Por padrão, esse método gera o evento UnhandledException, desde que um depurador não esteja anexado e o aplicativo esteja manipulando o evento UnhandledException.

Se o aplicativo for de instância única e já estiver em execução, a instância subsequente do aplicativo chamará o método OnStartupNextInstance na instância original do aplicativo e será encerrada.

O construtor OnStartupNextInstance(StartupNextInstanceEventArgs) chama a propriedade UseCompatibleTextRendering para determinar qual mecanismo de renderização de texto usar para os formulários do aplicativo. Por padrão, a propriedade UseCompatibleTextRendering retorna False, indicando que o mecanismo de renderização de texto GDI deve ser usado, que é o padrão no Visual Basic 2005 e em versões posteriores. Você pode substituir a propriedade UseCompatibleTextRendering para retornar True, que indica que o mecanismo de renderização de texto GDI+ deve ser usado, que é o padrão no Visual Basic .NET 2002 e no Visual Basic .NET 2003.

Como configurar o aplicativo

Como parte do modelo de aplicativo do Visual Basic, a classe WindowsFormsApplicationBase fornece propriedades protegidas que configuram o aplicativo. Essas propriedades devem ser definidas no construtor da classe de implementação.

Em um projeto padrão do Windows Forms, o Designer de Projeto cria código para definir as propriedades com as configurações do designer. As propriedades são usadas apenas quando o aplicativo está iniciando; defini-los após o início dele não tem efeito.

Propriedade Determina Configuração no painel do Aplicativo do Designer de Projeto
IsSingleInstance Se o aplicativo é executado como um aplicativo de instância única ou de várias instâncias. Caixa de seleção Criar aplicativo de instância única
EnableVisualStyles Se o aplicativo usar estilos visuais que correspondam ao Windows XP. Caixa de seleção Habilitar estilos visuais do XP
SaveMySettingsOnExit Se o aplicativo salvar automaticamente as alterações nas configurações do usuário do aplicativo quando ele for encerrado. Caixa de seleção Salvar My.Settings no Desligamento
ShutdownStyle O que faz com que o aplicativo seja encerrado, como quando o formulário de inicialização é fechado ou quando o último formulário é fechado. Lista de Modo de desligamento

Confira também