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 MattosIntroduçã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.