Desenvolvimento - C#

Criando Eventos Customizados no C# (WindowsForms)

Necessidade comum no desenvolvimento de soluções Windows Forms é a criação de eventos personalizados.

por Carlos de Mattos



Introdução

Necessidade comum no desenvolvimento de soluções Windows Forms é a criação de eventos personalizados. O desenvolvedor pode utilizar este recurso para gerenciar de forma mais eficiente o fluxo de execução do seu programa. Com eventos, podemos manter o usuário informado sobre o processamento executado pela aplicação e manter seu usuário informado é sem dúvida nenhuma uma boa prática. Os formulários e controles possuem eventos built-in que atendem as necessidades mais comuns das aplicações, contudo, a possibilidade de criarmos nossos próprios eventos nos permite melhorar a qualidade do software produzido.

Estrutura do Exemplo

O exemplo apresentado neste artigo foi elaborado sobre a seguinte estrutura:

    01: public delegate void AoSalvarEventHandler(object sender, EventArgs e);

    02:

    03: [Category("Bartender - CustomEvents"), Description("Ocorre sempre ...")]

    04: public event AoSalvarEventHandler AoSalvar;

    05:

    06: public virtual void RaiseAoSalvar()

    07: {

    08:    AoSalvar(this, new EventArgs());

    09: }

    Quadro 1: Declarando Eventos e Atributos Customizados

    Figura 1 : Atribudos dos Eventos Customizados

    Consumindo Eventos

    O aplicativo utilizado no exemplo, consome o evento AoSalvar sempre que o usuário clica no botão Salvar da barra de ferramentas. O código deste botão é apresentado no Quadro 2, a linha em negrito destaca o método RaiseAposSalvar que dispara o evento imediatamente após o método SalvarRegistro ser executado. Neste fragmento de código, o objeto frmActiveChild corresponde ao formulário de Produtos instanciado pelo MDI.

    ......

    case "Salvar":

       if (this.ActiveMdiChild != null)

       {

          try

          {

             if (frmActiveChild.ValidarFormulario())

             {

                frmActiveChild.Validate();

                frmActiveChild.RaiseAoSalvar();

                frmActiveChild.SalvarRegistro();

                frmActiveChild.RaiseAposSalvar();

                frmActiveChild.Status = frmBase.FormStatus.Ocioso;

                AtualizarBarraFerramentas();

                frmActiveChild.DesativarControles();

                frmActiveChild.Refresh();

             }

    }

    .....

    Quadro 2: Fragmento de código disparando o evento AoSalvar

    Já no formulário de Produtos. O tratamento do evento disparado é simples e funciona da mesma forma como qualquer outro evento built-in. Você pode gerar o código para o EventHandler simplesmente clicando sobre a linha deste evento na Janela de Propriedades. Veja o Quadro 3 com o evento tratado.

    private void frmProdutos_AoSalvar(object sender, EventArgs e)

    {

    MessageBox.Show("Disparado o evento AoSalvar!");

    }

    Quadro 3: Consumindo o Evento AoSalvar

    Conclusão

    Com este exemplo, você pode criar seus eventos personalizados e oferecer um feedback mais elegante e eficiente para os usuários das suas aplicações Windows Forms. Existe ainda a possibilidade de implementar eventos mais complexos incluindo informações peculiares ao evento customizado, consulte o MSDN para maiores informações.

Carlos de Mattos

Carlos de Mattos - É profissional certificado pela Microsoft desde 1998. Atua como desenvolvedor de soluções customizadas para o mercado corporativo há mais de 10 anos. Foi premiado pela Microsoft como MVP em 2003 e 2004. Tem diversos artigos publicados nas revistas FórumAccess e MSDN Magazine, nos Websites MSDN Online Brasil, Portal DevMedia/MSDN e Linha de Código. Carlos também atuou durante 5 anos junto à Comunidade Acadêmica na região de Sorocaba/SP ministrando palestras e treinamentos junto às Universidades e Colégios Técnicos. Atualmente está em Sorocaba/SP, na WD5 Solutions dedicando-se à implementação de soluções baseadas em tecnologia Microsoft.NET.