Compartilhar via


Exemplo eventos

Os eventos são mecanismos que permitem que o código específico do aplicativo a ser executada quando ocorre uma ação. Eventos acontecem antes que ocorra a ação associada (pre-events) ou após a ação (post-events). Por exemplo, quando um usuário clica em um botão em uma janela, um post-event é gerado, permitindo métodos específicos de aplicativos executar. Um delegado manipulador de evento é acoplado ao método a ser executado quando o sistema gera um evento. O manipulador de eventos é adicionado ao evento para que seja capaz de chamar seu método quando o evento é gerado. Eventos podem ter dados específicos do evento (por exemplo, um mouse para baixo de eventos pode incluir dados sobre o local do cursor na tela).

A assinatura do método de manipulação de eventos é idêntica a assinatura do delegado manipulador de eventos. A assinatura do manipulador de eventos observa as seguintes convenções:

  • O tipo de retorno é Void.

  • O primeiro parâmetro é chamado sender e é do tipo Object. Este é o objeto que disparou o evento.

  • O segundo parâmetro é denominado e e é do tipo EventArgs ou uma classe derivada de EventArgs.Esta é a dados específicos do evento.

  • O método tem exatamente dois parâmetros.

Para mais informações sobre eventos, veja Tratamento e disparada de eventos.

Para usar a terminologia de elevar para eventos em vez de incêndio ou disparador.

Use o System. EventHandler <T> em vez de criar manualmente novos representantes para serem usados como manipuladores de eventos.

Essa diretriz se aplica principalmente para novas áreas de recurso. Se você estiver expandindo a funcionalidade em uma área que já usa manipuladores de eventos de não-genéricas, você pode continuar a usar os manipuladores de eventos de não-genéricas para manter o design consistente.

Não é possível cumprir essa diretriz se sua biblioteca destina-se a versões do.NET Framework que não oferecem suporte a genéricos.

Considere o uso de uma classe derivada de System. EventArgs como o argumento de evento, a menos que você tiver certeza absoluta o evento nunca precise executar todos os dados para o método de manipulação de eventos, caso em que você pode usar o tipo System. EventArgs diretamente.

Se você definir um evento que leva um EventArgs instância em vez de uma classe derivada, definido por você, não é possível adicionar dados ao evento em versões posteriores. Por esse motivo, é preferível criar uma classe derivada vazia de EventArgs. Isso permite que você adicionar dados para o evento em versões posteriores sem introduzir alterações significativas.

Use um método virtual protegido para cada evento. Isso é aplicável somente para eventos de não-estático nas classes sem lacre, não a estruturas, classes lacradas ou eventos estáticos.

Conformidade com essa diretriz permite que as classes derivadas manipular um evento da classe base, substituindo o método protegido. O nome do protegido virtual (Overridable em Visual Basic) método deve ser o mesmo como o nome do evento prefixadas com On. Por exemplo, o método virtual protegido para um evento chamado "TimeChanged" é denominado "OnTimeChanged".

Observação importanteImportante

As classes derivadas substituem o método virtual protegido não são necessários para chamar a implementação da classe base.A classe base deve continuar a funcionar corretamente, mesmo se a sua implementação não é chamada.

Use um parâmetro que é digitado como a classe de argumento de evento para o método protegido que gera um evento. O parâmetro deve ser nomeado e.

O FontDialog classe fornece o seguinte método, o que eleva o Apply evento:

Protected Overridable Sub OnApply( ByVal e As EventArgs )
protected virtual void OnApply(EventArgs e);

Não passe null (Nothing no Visual Basic) como o parâmetro do remetente quando disparar um evento não-static.

Em eventos estáticos, o sender parâmetro deve ser null (Nothing em Visual Basic).

Não passe null (Nothing no Visual Basic) como o parâmetro de dados de evento quando disparar um evento.

Se não houver nenhum dado de evento, passar Empty em vez de null.

Esteja preparado para executar o código arbitrário no método de manipulação de eventos.

Considere colocar o código de onde o evento é aumentado em um bloco try-catch para evitar o encerramento do programa devido a exceções sem tratamento lançadas a partir de manipuladores de eventos.

Considere a geração de eventos que o usuário final pode cancelar. Isso só se aplica a pre-events.

Se você estiver criando um evento cancelável, use CancelEventArgs em vez de EventArgs como a classe base para o objeto de dados de evento e.

Portions Copyright 2005 Microsoft Corporation. Todos os direitos reservados.

Portions Copyright Addison-Wesley Corporation. Todos os direitos reservados.

Para obter mais informações sobre as diretrizes de design, consulte a "diretrizes de Design do Framework: Convenções, idiomas e padrões de reutilizável.Bibliotecas de rede" catálogo por Krzysztof Cwalina e Brad Abrams, publicado pela Addison-Wesley, 2005.

Consulte também

Conceitos

Design de manipulador de evento personalizado

Outros recursos

Diretrizes de Design do membro

Diretrizes de Design para desenvolvimento bibliotecas de classe