Compartilhar via


Exemplo eventos

Os eventos são mecanismos que permitir executar quando ocorre uma ação de códigos específicos do aplicativo. Eventos acontecer antes de ocorre a ação associada (pre-events) ou depois que a ação ocorre (post-events). Por exemplo, quando um usuário clica em um botão em uma janela, um post-evento é aumentado permitindo métodos específicos de aplicativo executar. Um delegado manipulador de evento é limite ao método a ser executado quando o sistema gera um evento. O manipulador de eventos é adicionado ao evento para que ele possa chamar seu método quando o evento é gerado. Eventos podem ter dados específicos do evento (por exemplo, um mouse para baixo de evento pode incluir dados sobre o local do cursor de tela).

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

  • O tipo de retorno é Void.

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

  • O segundo parâmetro é denominado e e é do tipo EventArgs ou uma classe derivada de EventArgs.Isso são os dados de evento específico.

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

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

Use a terminologia de aumento para eventos em vez de incêndio ou disparar.

Usar sistema.eventoHandler <t>em vez de criar manualmente novos representantes para ser usado sistema autônomo evento manipuladores.

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

Não pode estar em conformidade com essa diretriz se sua biblioteca destina-se a versões do .NET estrutura que não oferecem suporte a genéricos.

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

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

Utilizar um método virtual protegido para gerar cada evento.Isso se aplica somente a non-estático eventos em classes sem lacre, não a estruturas, classes seladas ou eventos estático.

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

Observação importanteObservação importante:

Classes derivadas substituem o método virtual protegido não são necessárias para chamar a implementação da classe base. A classe base precisa continuar a funcionar corretamente, mesmo se sua implementação não for chamada.

Use um parâmetro que é tipado sistema autônomo a classe de argumento de evento para o método protegido que gera um evento.O parâmetro deve ser nomeado e.

The FontDialog classe fornece o método seguinte, que dispara a Apply evento:

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

Não transmita nulo (Nothing no Visual Basic) sistema autônomo o parâmetro do remetente quando disparar um evento não-estático.

Em eventos estático, a sender o parâmetro deve ser null (Nothing no Visual Basic).

Não transmita nulo (Nothing no Visual Basic) sistema autônomo 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 onde o evento é aumentado em um bloco try-catch para impedir encerramento de programa devido a exceções sem tratamento lançadas de manipuladores de eventos.

Considere a possibilidade de geração de eventos pode cancelar o usuário participante.Isso se aplica somente a pre-events.

Se você estiver criando um evento pode ser cancelado, use CancelEventArgs em vez de EventArgs sistema autônomo a classe base para o objeto de dados do evento e.

Partes direitos autorais 2005 Microsoft Corporation. Todos os direitos reservados.

Partes direitos autorais Addison-Wesley Corporation. Todos os direitos reservados.

Para obter mais informações sobre diretrizes de design, consulte a "diretrizes de design do estrutura: Catálogo de convenções, idiomas e padrões para bibliotecas do .NET reutilizável"Krzysztof Cwalina e Brad Abrams, publicado pela Addison-Wesley, 2005.

Consulte também

Conceitos

Design de manipulador de eventos personalizado

Outros recursos

Diretrizes de design de membro

Diretrizes de Design para desenvolvimento bibliotecas de classe