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 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