예제 #1
0
        //a assinatura do método tem que bater com a do delegete event (retorno sempre void e recebem um object e os argumentos dos eventos
        private void QuandoExcederDecibeis(object sender, EventArgs e)
        {
            //Assim é póssivel passar informação entre a classe que executa o evento e a classe assinante do evento
            ExcessoDecibeisEventArgs eventArgs = (ExcessoDecibeisEventArgs)e;

            MessageBox.Show(string.Format("O cachorro passou dos limites, com {0} decibéis.", eventArgs.IntensidadeLatidos), "Excesso de decibéis", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        }
예제 #2
0
        //Quando o evento ocorrer, os dois métodos abaixo serão chamados, porque eles assinaram para o evento.
        private void QuandoExcederDecibeis(object sender, EventArgs e)
        {
            ExcessoDecibeisEventArgs eventArgs = (ExcessoDecibeisEventArgs)e;

            MessageBox.Show(string.Format("O cachorro passou dos limites com {0} dB.", eventArgs.IntensidadeLatido), "Excesso de decibéis",
                            MessageBoxButtons.OK, MessageBoxIcon.Warning);
        }
예제 #3
0
        public frmGerenciadorLatidosCachorros()
        {
            InitializeComponent();
            _gerenciadorLatidos = new GerenciadorLatidos();

            /* A implementação abaixo foi comentada para dar lugar ao uso de expressões lambda,
             * implementadas no trecho abaixo dos comentários.
             * //Ao instanciar a classe do gerenciador, métodos desta classe assinam o evento, no padrão
             * //já visto dos delegates.
             * _gerenciadorLatidos.ExcessoDecibeisEvent += QuandoExcederDecibeis;
             * _gerenciadorLatidos.ExcessoDecibeisEvent += QuandoExcederDecibeisDeNovo;
             */

            /* As linhas abaixo foram criadas na aula sobre expressões lambda, mais especificamente, métodos
             * anônimos. Aqui, as linhas que estão comentadas acima foram substituídas pela implementação abaixo,
             * onde se cria diretamente a lógica do método com um método anônimo. Desta forma, os métodos
             * QuandoExcederDecibeis e QuandoExcederDecibeisDeNovo nunca são chamados e poderiam ser apagados.
             * A vantagem disso é justamente tornar o código mais limpo e uma classe não tão cheia de métodos.
             */
            _gerenciadorLatidos.ExcessoDecibeisEvent += (sender, args) =>
            {
                ExcessoDecibeisEventArgs eventArgs = (ExcessoDecibeisEventArgs)args;
                MessageBox.Show(string.Format("O cachorro passou dos limites com {0} dB.", eventArgs.IntensidadeLatido),
                                "Excesso de decibéis", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            };
            _gerenciadorLatidos.ExcessoDecibeisEvent += (sender, args) =>
            {
                MessageBox.Show("Você será multado", "Excesso de decibéis",
                                MessageBoxButtons.OK, MessageBoxIcon.Warning);
            };
        }
예제 #4
0
 public int Latir()
 {
     _intensidadeLatido += 10;
     if (_intensidadeLatido > 80)
     {
         ExcessoDecibeisEventArgs e = new ExcessoDecibeisEventArgs
         {
             IntensidadeLatido = _intensidadeLatido
         };
         OnExcessoDecibeis(e);
     }
     return(_intensidadeLatido);
 }
예제 #5
0
 public frmGerenciadorLatidos()
 {
     InitializeComponent();
     _gerenciadorLatidos = new GerenciadorLatidos();
     _gerenciadorLatidos.ExcessoDecibeisEvent += (sender, args) =>
     {
         ExcessoDecibeisEventArgs eventArgs = (ExcessoDecibeisEventArgs)args;
         MessageBox.Show(string.Format("O cachorro passou dos limites, com {0} decibeis. ", eventArgs.IntensidadeLatido, "Excesso de decibéis", MessageBoxButtons.OK, MessageBoxIcon.Warning));
     };
     _gerenciadorLatidos.ExcessoDecibeisEvent += (sender, args) =>
     {
         MessageBox.Show("Você acbou de levar uma multa ", "Excesso de decibéis", MessageBoxButtons.OK, MessageBoxIcon.Warning);
     };
 }
예제 #6
0
 public int Latir()
 {
     if (_intensidadeLatido != 100)
     {
         _intensidadeLatido += 10;
     }
     //a lógica que chama o método OnExcessoDecibeis fica aqui e não no proprio evento
     //pq a responsabilidade do método OnExcessoDecibeis é de apenas disparar o evento (S do SOLID ;) )
     if (_intensidadeLatido > 80)
     {
         ExcessoDecibeisEventArgs e = new ExcessoDecibeisEventArgs
         {
             IntensidadeLatidos = _intensidadeLatido
         };
         //chamando o método que dispara o evento
         OnExcessoDecibeis(e);
     }
     return(_intensidadeLatido);
 }
예제 #7
0
        public int Latir()
        {
            _intensidadeLatido += 10;
            if (_intensidadeLatido > 80)
            {
                //O método onde se deseja que o evento aconteça chama o método auxiliar de disparo.

                /* Caso se deseje gerar um evento, sem qualquer parâmetro, declara-se o new EventArgs()
                 * na chamada do método
                 * OnExcessoDecibeis(new EventArgs());
                 */

                /* Caso seja preciso fornecer parâmetros ao evento, é preciso criar uma classe que
                 * herde EventArgs, e programá-la como desejado. No caso deste exemplo, é a classe
                 * ExcessoDecibeisEventArgs
                 */
                ExcessoDecibeisEventArgs e = new ExcessoDecibeisEventArgs
                {
                    IntensidadeLatido = _intensidadeLatido
                };
                OnExcessoDecibeis(e);
            }
            return(_intensidadeLatido);
        }