Ao abrir o VS 2008, no Form1.cs [Design], adicionei o seguinte:
- 1 TextBox, alterei o (name) para visor;
- 10 buttons para os números de 0 ... 9 (não alterei os names);
- 4 buttons para os sinais de operação, alterei os names para btmais, btmenos, btdividido e btvezes;
- 1 button para o sinal igual, alterei o nome para bigual;
- 1 button para zerar o visor (C da calculadora), alterei o nome para bzerar;
- 1 button para vírgula, alterei o nome para bvirgula.
ficou assim:
Para isso, dê dois clicks em cima do botão que você quer atribuir um comando. Vai aparecer tipo assim:
OBS.: Dentro do public partial class Form1 : Form, eu declarei as variáveis:
int op; // nos buttons de operação, escolhi atribuir um código, por isso vou usar um valor inteiro
bool res = false; // essa string booleana é para verificar se tem alguma coisa no meu visor
E o código vai ser esse (para o button1, mas tbm se aplica aos outros buttons de números, pq é a mesma lógica, só muda os números, tipo 0, 1, 2, 3 ...) :
private void button1_Click(object sender, EventArgs e)
{
if (res)
visor.Text = "";
res = false;
if (res == false)
{
visor.Text += Convert.ToString(1);
if (x != 0)
y = 1;
else
x = 1;
}
}
OBS.: Dentro do public partial class Form1 : Form, eu declarei as variáveis:
double x, y, result, variavel1; /*x para o primeiro número que eu clicar; y para o segundo número; result para o resultado (claro) e variavel1 para armazenar o primeiro número (x) mais a operação (no button das operações, essa parte vai ficar mais clara).*/
int op; // nos buttons de operação, escolhi atribuir um código, por isso vou usar um valor inteiro
bool res = false; // essa string booleana é para verificar se tem alguma coisa no meu visor
Para os botões de operação (essa parte que me fazia perder a cabeça -- ), tenho o seguinte código :
private void bmais_Click(object sender, EventArgs e)
{
op = 1; // operação recebe a função '+', que tem código 1
variavel1 = Convert.ToDouble(visor.Text); // variável1 armazena o que está na tela
// que é o 1º numero (x) e a operação
visor.Text = ""; // depois o visor é zerado, para receber o 2º número
}
private void bmenos_Click(object sender, EventArgs e)
{
op = 2; // operação recebe a função '-', que tem código 2
variavel1 = Convert.ToDouble(visor.Text); // variável1 armazena o que está na tela
// que é o 1º numero (x) e a operação
visor.Text = ""; // depois o visor é zerado, para receber o 2º número
}
private void bvezes_Click(object sender, EventArgs e)
{
op = 3; // operação recebe a função '*', que tem código 3
variavel1 = Convert.ToDouble(visor.Text); // variável1 armazena o que está na tela
// que é o 1º numero (x) e a operação
visor.Text = ""; // depois o visor é zerado, para receber o 2º número
}
private void bdividido_Click(object sender, EventArgs e)
{
op = 4; // operação recebe a função '/', que tem código 4
variavel1 = Convert.ToDouble(visor.Text); // variável1 armazena o que está na tela
// que é o 1º numero (x) e a operação
visor.Text = ""; // depois o visor é zerado, para receber o 2º número
}
Agora, quando eu apertar o botão igual, vou verificar o que tem em op (que é o meu código da operação), para poder operar entre os números que estão em x e y. Segue o código:
private void bigual_Click(object sender, EventArgs e)
{
try
{
y = Convert.ToDouble(visor.Text);
if (op == 1) //se a operação estiver armazenado a função mais
result = variavel1 + y; // o resultado será a soma das variáveis
if (op == 2) //se a operação estiver armazenado a função menos
result = variavel1 - y; // o resultado será a subtração das variáveis
if (op == 3) //se a operação estiver armazenado a função vezes
result = variavel1 * y; // o resultado será a multiplicação das variáveis
if (op == 4) //se a operação estiver armazenado a função dividido
result = variavel1 / y; // o resultado será a divisão das variáveis
visor.Text = Convert.ToString(result); //mostra no visor o valor de result
variavel1 = Convert.ToDouble(visor.Text);
res = true;
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
Para zerar o visor (e zera tudo), é bem mais simples:
private void bzerar_Click(object sender, EventArgs e)
{
visor.Text = "";
x = 0;
variavel1 = 0;
y = 0;
}
Para o botão da vírgula, também foi complicado, pois não sabia da existência do IndexOf (pra fazer com que a vírgula não se repita), mas consegui (Amém!) tá aí o código:
private void bvirgula_Click(object sender, EventArgs e)
{
int virg;
virg = visor.Text.IndexOf(","); //Procura por todo visor o caracter "," e se achar
if (virg >= 0) //retorna a void, ou seja, faz nada
return;
else //se não achar, a vírgula é inserida
visor.Text += ",";
}
Agora é só apertar em Debug, e você verá como é satisfatório fazer uma calculadora kkkk
Qualquer dúvida... estamos aqui pra tentar ajudar né :)
Até mais.