Visual Basic, VB .NET, ASP, Active X, Access, SQL Server

Visual Basic: lidando com erros no evento Load dos formulários

Quando você carrega um formulário e encontra um erro logo no evento Load do form, o que você normalmente quer é dar uma mensagem para o usuário e descarregar o formulário. Porém, você encontra um problema para fazer isto. O problema é que você não pode usar o comando Unload para descarregar um formulário no seu evento Load. 

A solução é postar uma mensagem para o formulário que tem o mesmo efeito do comando Unload e será processada após a saída do procedimento de evento Load. Usando a API PostMessage, você pode colocar uma mensagem WM_CLOSE na fila de mensagens da janela e sair do tratamento de erros com a certeza que o form será descarregado na sequência. Veja abaixo a declaração da API PostMessage e o envio da mensagem num tratamento de erros ocorridos durante a carga de um form.

Na seção de declarações do form:

Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" ( _
    ByVal hwnd As Long, _
    ByVal wMsg As Long, _
    ByVal wParam As Long, _
    ByVal lParam As Long) As Long


Private Const WM_CLOSE = &H10

No evento Load do form:

Private Form_Load ()

   On Error GoTo ErroLocal

   Dim lngX As  Long

   lngX = 1/0 'produz um erro de divisão por zero

   Exit Sub

ErroLocal:

    MsgBox "Ocorreu um erro de divisão por zero."

   PostMessage hwnd, WM_CLOSE, 0&, 0&

End Sub