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".
Importante |
---|
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