Jump to content


Photo

Object Sender


  • Faça o login para participar
1 reply to this topic

#1 aldomacedo

aldomacedo

    Novato no fórum

  • Usuários
  • 4 posts
  • Sexo:Não informado

Posted 07/01/2009, 14:14

Nesse metodo ou função criada, entendo a maioria dos comandos, mas não consigo compreender direito o que são (OBject Sender e EventArgs e)

alguém poderia me ajudar a decifrar .


private void Calcular(object sender, EventArgs e)
{
try
{
decimal valor1, valor2, resultado = 0;
valor1 = Convert.ToDecimal(valor1TextBox.Text);
valor2 = Convert.ToDecimal(valor2TextBox.Text);

Button botao = new Button();
botao = (Button)sender;

switch (botao.Text)
{
case "+": resultado = valor1 + valor2; break;
case "-": resultado = valor1 - valor2; break;
case "*": resultado = valor1 * valor2; break;
case "/": resultado = valor1 / valor2; break;
}
resultadoLabel.Text = resultado.ToString("n2");
}
catch (FormatException)
{
MessageBox.Show("Erro de formato");
}
catch (DivideByZeroException)
{
MessageBox.Show("Erro de Divisão por Zero");
}
catch (Exception)
{
MessageBox.Show("Erro de Desconhecido");
}
}

#2 Luiz Fernando Noschang

Luiz Fernando Noschang

    Novato no fórum

  • Usuários
  • 6 posts
  • Sexo:Não informado

Posted 07/08/2009, 15:57

O "sender" é um objeto qualquer que tenha gerado o evento Calcular.
O "e" (EventArgs) são os argumentos passados para o evento.

Neste caso aqui, EventArgs não faz nenhuma diferença, mas por exemplo, se o evento sendo tratado fosse o movimento do mouse, então EventArgs traria a posição X, Y do mouse assim como o botão do mouse que está presisonado, Esquerdo, Direito ou do Meio.


Pelo código, creio que se trata de uma calculadora.
Você tem no form 4 botões, cada um para uma operação (soma, divisão subtração, multipllicação).

Você poderia programar separadamente um evento para cada botão.
Mas para gerar menos código fonte e ficar mais organizado, implementou-se apenas um evento, e este mesmo evento é chamado em todos os botões.

Ou seja, quando você clica no botão de soma e no botão de divisão, o código que será executado é exatamente o mesmo.
A única coisa que muda, é o objeto sender, que no caso é o botão pressionado.

Neste ponto, o algoritmo verifica se o texto do botão pressionado é "+" e faz uma soma, se for "-" faz uma subtração e assim por diante...

Você pode fazer uma brincadeira. Crie um novo botão no form. Mude o texto dele para "^".
Agora no evento Click do botão, selecione o método evento Calcular.

Depois vá até o código fonte e digite:

case "^": resultado = Math.Pow(valor1, valor2); break;

Isso vai retornar a potência entre os dois valores.

OBS: você pode associar o evento Calcular com qualquer outro tipo de controle, não precisa ser necessariamente um botão.

Espero que você tenha entendido!!!




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq