[ Foro de C# ]
Hola, en el colegio me pidieron hacer una calculadora, ya la tengo echa, pero tengo un problema a la hora de los errores y escribir las operaciones con el teclado. Puedo usar los numeros y tambien puedo borrar, pero no encuentro la forma de hacer que tambien pueda usar las operaciones . Tambien tengo problema con los errores, que si pone 2 comas le tire error, o que si clickea/apreta 2 operaciones tambien le tire error, nesecito ayuda, gracias!
Mi codigo es este por ahora=
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
float primero;
float segundo;
float resultado;
string operacion;
public Form1()
{
InitializeComponent();
}
private void btn0_Click(object sender, EventArgs e)
{
txtpantalla.Text = txtpantalla.Text + "0";
}
private void btn1_Click(object sender, EventArgs e)
{
txtpantalla.Text = txtpantalla.Text + "1";
}
private void btn2_Click(object sender, EventArgs e)
{
txtpantalla.Text = txtpantalla.Text + "2";
}
private void btn3_Click(object sender, EventArgs e)
{
txtpantalla.Text = txtpantalla.Text + "3";
}
private void btn4_Click(object sender, EventArgs e)
{
txtpantalla.Text = txtpantalla.Text + "4";
}
private void btn5_Click(object sender, EventArgs e)
{
txtpantalla.Text = txtpantalla.Text + "5";
}
private void btn6_Click(object sender, EventArgs e)
{
txtpantalla.Text = txtpantalla.Text + "6";
}
private void btn7_Click(object sender, EventArgs e)
{
txtpantalla.Text = txtpantalla.Text + "7";
}
private void btn8_Click(object sender, EventArgs e)
{
txtpantalla.Text = txtpantalla.Text + "8";
}
private void btn9_Click(object sender, EventArgs e)
{
txtpantalla.Text = txtpantalla.Text + "9";
}
private void btnpunto_Click(object sender, EventArgs e)
{
txtpantalla.Text = txtpantalla.Text + ",";
}
private void btnsuma_Click(object sender, EventArgs e)
{
operacion = "+";
primero = float.Parse(txtpantalla.Text);
txtpantalla.Clear();
}
private void btnresta_Click(object sender, EventArgs e)
{
operacion = "-";
primero = float.Parse(txtpantalla.Text);
txtpantalla.Clear();
}
private void btnmultiplicacion_Click(object sender, EventArgs e)
{
operacion = "*";
primero = float.Parse(txtpantalla.Text);
txtpantalla.Clear();
}
private void btndivision_Click(object sender, EventArgs e)
{
operacion = "/";
primero = float.Parse(txtpantalla.Text);
txtpantalla.Clear();
}
private void btnigual_Click(object sender, EventArgs e)
{
segundo = float.Parse(txtpantalla.Text);
switch(operacion){
case "+":
resultado = primero + segundo;
txtpantalla.Text = resultado.ToString();
break;
case "-":
resultado = primero - segundo;
txtpantalla.Text = resultado.ToString();
break;
case "*":
resultado = primero * segundo;
txtpantalla.Text = resultado.ToString();
break;
case "/":
resultado = primero / segundo;
txtpantalla.Text = resultado.ToString();
break;
}
}
private void btnlimpiar_Click(object sender, EventArgs e)
{
txtpantalla.Clear();
}
private void txtpantalla_TextChanged(object sender, EventArgs e)
{
}
private void txtpantalla_KeyPress(object sender, KeyPressEventArgs e)
{
if((e.KeyChar >= (char)Keys.D0 && e.KeyChar <= (char)Keys.D9)|| (e.KeyChar==',')|| (e.KeyChar==(char)8))
e.Handled=false;
else
e.Handled=true;
En una calculadora "normal" no da error si se pulsan dos operaciones seguidas, sino que la operación que se realiza es la segunda que se haya indicado, en vez de la primera.
Para que no se permitan dos comas tienes que mejorar el "txtpantalla_KeyPress", de modo que no se acepte el "e.KeyChar==','" si el texto ya contiene una coma (usando ".Contains").
Las operaciones las podrías filtrar desde ese mismo método, "txtpantalla_KeyPress", haciendo que si se detecta el correspondiente carácter (por ejemplo, "+") se llame al método Clic correspondiente ("por ejemplo, "btnsuma_Click").
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)