PDA

Ver la versión completa : [Calculadora]hecha en C#



McLik
28-07-2007, 00:51
bueno dejo el codigo de la calculadora no me critiquen mucho :( :


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
public partial class Form1 : Form
{
private double cal1=0;
private double cal2 = 0;
private double cal3 = 0;
private double cal4 = 0;
private double total = 0;
private int suma = 0;
private int resta = 0;
private int multiplicacion = 0;
private int division = 0;
private int dec = 0;
private int men = 0;

public Form1()
{
InitializeComponent();
txtpatalla2.Visible = false;
txtpatalla2.Enabled = false;
txtpatalla.Enabled = false;
lblcalc.Visible = false;
}

private void button3_Click(object sender, EventArgs e)
{

}

private void Form1_Load(object sender, EventArgs e)
{

}

private void button3_Click_1(object sender, EventArgs e)
{

if (dec == 1)
{
total = Convert.ToDouble(txtpatalla.Text += ",0");
txtpatalla.Visible = true;
txtpatalla2.Visible = false;
}
else if (men == 1)
{
total = Convert.ToDouble(txtpatalla.Text += "-0");
txtpatalla.Visible = true;
txtpatalla2.Visible = false;
}
else
{
total = Convert.ToDouble(txtpatalla.Text += "0");
txtpatalla.Visible = true;
txtpatalla2.Visible = false;
}

dec = 0;
men = 0;
}

private void btnuno_Click(object sender, EventArgs e)
{

if (dec == 1)
{
total =Convert.ToDouble(txtpatalla.Text += ",1");
txtpatalla.Visible = true;
txtpatalla2.Visible = false;
}
else if (men == 1)
{
total = Convert.ToDouble(txtpatalla.Text += "-1");
txtpatalla.Visible = true;
txtpatalla2.Visible = false;
}
else
{
total = Convert.ToDouble(txtpatalla.Text += "1");
txtpatalla.Visible = true;
txtpatalla2.Visible = false;
}
dec = 0;
men = 0;

}

private void btndos_Click(object sender, EventArgs e)
{

if (dec == 1)
{
total =Convert.ToDouble(txtpatalla.Text += ",2");
txtpatalla.Visible = true;
txtpatalla2.Visible = false;
}
else if (men == 1)
{
total = Convert.ToDouble(txtpatalla.Text += "-2");
txtpatalla.Visible = true;
txtpatalla2.Visible = false;
}
else
{
total = Convert.ToDouble(txtpatalla.Text += "2");
txtpatalla.Visible = true;
txtpatalla2.Visible = false;
}
dec = 0;
men = 0;
}

private void btntres_Click(object sender, EventArgs e)
{

if (dec == 1)
{
total =Convert.ToDouble(txtpatalla.Text += ",3");
txtpatalla.Visible = true;
txtpatalla2.Visible = false;
}
else if (men == 1)
{
total = Convert.ToDouble(txtpatalla.Text += "-3");
txtpatalla.Visible = true;
txtpatalla2.Visible = false;
}
else
{
total = Convert.ToDouble(txtpatalla.Text += "3");
txtpatalla.Visible = true;
txtpatalla2.Visible = false;
}
dec = 0;
men = 0;
}

private void btncuatro_Click(object sender, EventArgs e)
{

if (dec == 1)
{
total =Convert.ToDouble(txtpatalla.Text += ",4");
txtpatalla.Visible = true;
txtpatalla2.Visible = false;
}
else if (men == 1)
{
total = Convert.ToDouble(txtpatalla.Text += "-4");
txtpatalla.Visible = true;
txtpatalla2.Visible = false;
}
else
{
total = Convert.ToDouble(txtpatalla.Text += "4");
txtpatalla.Visible = true;
txtpatalla2.Visible = false;
}
dec = 0;
men = 0;
}

private void btncinco_Click(object sender, EventArgs e)
{

if (dec == 1)
{
total =Convert.ToDouble(txtpatalla.Text += ",5");
txtpatalla.Visible = true;
txtpatalla2.Visible = false;
}
else if (men == 1)
{
total = Convert.ToDouble(txtpatalla.Text += "-5");
txtpatalla.Visible = true;
txtpatalla2.Visible = false;
}
else
{
total = Convert.ToDouble(txtpatalla.Text += "5");
txtpatalla.Visible = true;
txtpatalla2.Visible = false;
}
dec = 0;
men = 0;
}

private void btnseis_Click(object sender, EventArgs e)
{

if (dec == 1)
{
total =Convert.ToDouble(txtpatalla.Text += ",6");
txtpatalla.Visible = true;
txtpatalla2.Visible = false;
}
else if (men == 1)
{
total = Convert.ToDouble(txtpatalla.Text += "-6");
txtpatalla.Visible = true;
txtpatalla2.Visible = false;
}
else
{
total = Convert.ToDouble(txtpatalla.Text += "6");
txtpatalla.Visible = true;
txtpatalla2.Visible = false;
}
dec = 0;
men = 0;
}

private void btnsiete_Click(object sender, EventArgs e)
{

if (dec == 1)
{
total =Convert.ToDouble(txtpatalla.Text += ",7");
txtpatalla.Visible = true;
txtpatalla2.Visible = false;
}
else if (men == 1)
{
total = Convert.ToDouble(txtpatalla.Text += "-7");
txtpatalla.Visible = true;
txtpatalla2.Visible = false;
}
else
{
total = Convert.ToDouble(txtpatalla.Text += "7");
txtpatalla.Visible = true;
txtpatalla2.Visible = false;
}
dec = 0;
men = 0;
}

private void btnocho_Click(object sender, EventArgs e)
{

if (dec == 1)
{
total = Convert.ToDouble(txtpatalla.Text += ",8");
txtpatalla.Visible = true;
txtpatalla2.Visible = false;
}
else if (men == 1)
{
total = Convert.ToDouble(txtpatalla.Text += "-8");
txtpatalla.Visible = true;
txtpatalla2.Visible = false;
}
else
{
total = Convert.ToDouble(txtpatalla.Text += "8");
txtpatalla.Visible = true;
txtpatalla2.Visible = false;
}
dec = 0;
men = 0;
}

private void btnnueve_Click(object sender, EventArgs e)
{

if (dec == 1)
{
total = Convert.ToDouble(txtpatalla.Text += ",9");
txtpatalla.Visible = true;
txtpatalla2.Visible = false;
}
else if (men == 1)
{
total = Convert.ToDouble(txtpatalla.Text += "-9");
txtpatalla.Visible = true;
txtpatalla2.Visible = false;
}
else
{
total = Convert.ToDouble(txtpatalla.Text += "9");
txtpatalla.Visible = true;
txtpatalla2.Visible = false;
}
dec = 0;
men = 0;
}

private void btnsuma_Click(object sender, EventArgs e)
{
if (resta >= 1)
{
total = cal2 - total;
resta = 0;
txtpatalla.Text = Convert.ToString(total);
lblcalc.Text = Convert.ToString(total);

}



else if (suma >= 1)
{
total = cal1 + total;
suma = 0;
txtpatalla.Text = Convert.ToString(total);
lblcalc.Text = Convert.ToString(total);
}


else if (multiplicacion >= 1)
{
total = cal3 * total;
multiplicacion = 0;
txtpatalla.Text = Convert.ToString(total);
lblcalc.Text = Convert.ToString(total);
}

else if (division >= 1)
{
total = cal4 / total;
division = 0;
txtpatalla.Text = Convert.ToString(total);
lblcalc.Text = Convert.ToString(total);
}

txtpatalla.Text = "";

if (suma == 0)
{ }
else if (suma > 0)
{
total = cal1 + total;
}
lblcalc.Text = Convert.ToString(total);
txtpatalla.Visible = false;
txtpatalla2.Visible = true;
txtpatalla2.Text = Convert.ToString(total);



cal1 = total;




total = 0;
suma++;
dec = 0;

}

private void btnigual_Click(object sender, EventArgs e)
{
if (resta >= 1)
{
total = cal2-total;
resta = 0;
txtpatalla.Text = Convert.ToString(total);
lblcalc.Text = Convert.ToString(total);

}



else if (suma >= 1)
{
total = cal1 + total;
suma = 0;
txtpatalla.Text = Convert.ToString(total);
lblcalc.Text = Convert.ToString(total);
}


else if (multiplicacion >= 1)
{
total = cal3 * total;
multiplicacion = 0;
txtpatalla.Text = Convert.ToString(total);
lblcalc.Text = Convert.ToString(total);
}

else if (division >= 1)
{
total = cal4 / total;
division = 0;
txtpatalla.Text = Convert.ToString(total);
lblcalc.Text = Convert.ToString(total);
}
dec = 0;


}

private void btnresta_Click(object sender, EventArgs e)
{
if (resta >= 1)

{
total = cal2 - total;
resta = 0;
txtpatalla.Text = Convert.ToString(total);
lblcalc.Text = Convert.ToString(total);

}



else if (suma >= 1)

{
total = cal1 + total;
suma = 0;
txtpatalla.Text = Convert.ToString(total);
lblcalc.Text = Convert.ToString(total);
}


else if (multiplicacion >= 1)
{
total = cal3 * total;
multiplicacion = 0;
txtpatalla.Text = Convert.ToString(total);
lblcalc.Text = Convert.ToString(total);

}
else if (division >= 1)
{
total = cal4 / total;
division = 0;
txtpatalla.Text = Convert.ToString(total);
lblcalc.Text = Convert.ToString(total);

}

txtpatalla.Text = "";
if (resta == 0)
{ }
else if (resta > 0)
{
total = cal2-total;
}
lblcalc.Text = Convert.ToString(total);
txtpatalla.Visible = false;
txtpatalla2.Visible = true;
txtpatalla2.Text = Convert.ToString(total);


cal2 = total;



total = 0;
resta++;
dec = 0;

}

private void btnmultiplica_Click(object sender, EventArgs e)
{
if (resta >= 1)
{
total = cal2 - total;
resta = 0;
txtpatalla.Text = Convert.ToString(total);
lblcalc.Text = Convert.ToString(total);

}
else if (suma >= 1)
{
total = cal1 + total;
suma = 0;
txtpatalla.Text = Convert.ToString(total);
lblcalc.Text = Convert.ToString(total);

}
else if (multiplicacion >= 1)
{
total = cal3 * total;
multiplicacion = 0;
txtpatalla.Text = Convert.ToString(total);
lblcalc.Text = Convert.ToString(total);

}
else if (division >= 1)
{
total = cal4 / total;
division = 0;
txtpatalla.Text = Convert.ToString(total);
lblcalc.Text = Convert.ToString(total);

}
txtpatalla.Text = "";
if (multiplicacion == 0)
{ }
else if (multiplicacion > 0)
{
total = cal3 * total;
}
lblcalc.Text = Convert.ToString(total);
txtpatalla.Visible = false;
txtpatalla2.Visible = true;
txtpatalla2.Text = Convert.ToString(total);


cal3 = total;

total = 0;
multiplicacion++;
dec = 0;
}

private void btndibide_Click(object sender, EventArgs e)
{
if (resta >= 1)
{
total = cal2 - total;
resta = 0;
txtpatalla.Text = Convert.ToString(total);
lblcalc.Text = Convert.ToString(total);

}
else if (suma >= 1)
{
total = cal1 + total;
suma = 0;
txtpatalla.Text = Convert.ToString(total);
lblcalc.Text = Convert.ToString(total);


}
else if (multiplicacion >= 1)
{
total = cal3 * total;
multiplicacion = 0;
txtpatalla.Text = Convert.ToString(total);
lblcalc.Text = Convert.ToString(total);

}
else if (division >= 1)
{
total = cal4 / total;
division = 0;
txtpatalla.Text = Convert.ToString(total);
lblcalc.Text = Convert.ToString(total);

}
txtpatalla.Text = "";
if (division == 0)
{ }
else if (division > 0)
{
total = cal4 / total;
}
lblcalc.Text = Convert.ToString(total);
txtpatalla.Visible = false;
txtpatalla2.Visible = true;
txtpatalla2.Text = Convert.ToString(total);


cal4 = total;

total = 0;
division++;
dec = 0;

}

private void button2_Click(object sender, EventArgs e)
{
dec++;

}

private void btnc_Click(object sender, EventArgs e)
{

cal1=0;
cal2 = 0;
cal3 = 0;
cal4 = 0;
total = 0;
suma = 0;
resta = 0;
multiplicacion = 0;
division = 0;
dec = 0;
txtpatalla.Text = "";
txtpatalla2.Text = "";
txtpatalla2.Visible = false;
}

private void button10_Click(object sender, EventArgs e)
{
men++;
}

private void copiarCtrlCToolStripMenuItem_Click(object sender, EventArgs e)
{

}

private void cerrarToolStripMenuItem1_Click(object sender, EventArgs e)
{
Application.Exit();
}

private void msgToolStripMenuItem_Click(object sender, EventArgs e)
{
MessageBox.Show("No me hago responsable por el mal funcionamiento XD!!!");
}
private void btnuno_ASCII10100001(object sender, EventArgs e)
{
if (dec == 0)
{
total = Convert.ToDouble(txtpatalla.Text += "1");
txtpatalla.Visible = true;
txtpatalla2.Visible = false;
}
else
{
total = Convert.ToDouble(txtpatalla.Text += ",1");
txtpatalla.Visible = true;
txtpatalla2.Visible = false;
}
dec = 0;
}
}


}

a y una fotito :

http://www.subir-imagenes.com/imagenes/th_f54d64b10c.jpg (http://www.subir-imagenes.com/ver_imagen.php?img=130708)

Bueno no e programado aun los botones de on off, wl boton % y el 1/x estan porque copie la interfas grafica de la calculadora de windows pero no los programe, pero funcionan todos los numeros y los botones + - * / . +/- y el C que vuleve atras todo.Bueno lo que quiero hacer ahora es que al apretar las teclas del teclado numerico cada tecla tenga asignado un boton Ej.: apreto el "1" y se aprete el boton en el form que corresponda al 1. Para resumir como hace la calculadora de windows, si alguno sabe algun forma de hacerlo creo que e llegado a algo pero no estoy seguro, por el form tiene todo Ej: "private void btnuno_Click" yo creo que si en vez de decir que todo lo que esta abajo de eso pase cuando se haga click pase cuando se aprete la tecla haria lo que yo quiero, pero no se el nombre de las teclas en C# supongo que es en ASCII pero no se :). Agradesco toda ayuda.

Saludos y suerte.

rat
28-07-2007, 10:27
Pues esta bien, yo nunca he programado en C#, pero viendo la sintaxis no parece que tenga ningun fallo.

Escrito por McLik:
lo hice sin ayuda

lo hice de cero

no vi nunca el codigo ya hecho de una calculadora

copie la interfas grafica de la calculadora de windows
¿Que ocurre? :D:D:D:D ¡¡COPION!! :D:D:D

Salu2.

McLik
28-07-2007, 21:36
bueno copie solo la la interfas :) , es como si en ves de sacarlo de la calculadora de windows lo sacara de una calculadora domestica, solo eso, tampoco es que le e robado la interfas grafica a windows:p. Lo importante que toda la logica la e hecho solo :D .
Gracias por aportar comentarios al respecto,me caen bien ya que la calculadora la hice para el foro y bueno para practicar tambien ;) .

Saludos y suerte

hystd
29-07-2007, 03:51
Hola buenas! antes de nada decirte que buen trabajo jejeje, se ve que le has dedicado tiempo, aunque personalmente no lo hubiera implementado asi... jejeje. Y para ser la versión 1.0 esta bastante bien ;)

Podrias hacer mas legible el código, y ahorrarte algunas lineas, por ejemplo:


private void btnuno_Click(object sender, EventArgs e)
{

if (dec == 1)
{
total =Convert.ToDouble(txtpatalla.Text += ",1");
txtpatalla.Visible = true;
txtpatalla2.Visible = false;
}
else if (men == 1)
{
total = Convert.ToDouble(txtpatalla.Text += "-1");
txtpatalla.Visible = true;
txtpatalla2.Visible = false;
}
else
{
total = Convert.ToDouble(txtpatalla.Text += "1");
txtpatalla.Visible = true;
txtpatalla2.Visible = false;
}
dec = 0;
men = 0;

}


Lo cambiaría por:

private void btnuno_Click(object sender, EventArgs e)
{

if (dec == 1)
{
total =Convert.ToDouble(txtpatalla.Text += ",1");
}
else if (men == 1)
{
total = Convert.ToDouble(txtpatalla.Text += "-1");
}
else
{
total = Convert.ToDouble(txtpatalla.Text += "1");
}
dec = 0;
men = 0;
txtpatalla.Visible = true;
txtpatalla2.Visible = false;

}

ya que estas dos ultimas lineas se van a ejecutar siempre, sea cual sea la guarda del IF por la que se entre :)

En cuanto a lo de pulsar una tecla numerica del teclado, y que simule lo mismo que si pulsara el botón correspondiente de tu calculadora, puedes hacerlo de muchas maneras. Bien pasando el foco al cuadro de texto y éste automaticamente escribe el valor, o mas elegante (la que yo usaria), sería usando un evento del control (del tipo "OnKeyDown" o "OnKeyPress").

Puedes hacerlo como quieras, de todas formas, para lo de obtener el código de una tecla tienes una funcion de la API de Windows, llamada VkKeyScan, que le pasas el caracter en cuestión y devuelve el valor correspondiente a su Virtual Key. Por ejemplo:

VkKeyScan('a') ---> devuelve 65
VkKeyScan('z') ---> devuelve 90
VkKeyScan('1') ---> devuelve 49
VkKeyScan('2') ---> devuelve 50

Un saludo y suerte.

McLik
29-07-2007, 05:18
Siiiii eso es lo que queria muchas gracias por el dato, lo que paso es que como fue algo que lo hice medio rapido se me paso, eso esta mas claro que el agua, como vos lo decis, la verdad muchas gracias :)

Saludos y suerte

McLik
31-07-2007, 01:11
es sacado eso que me has dicho:


private void btnuno_Click(object sender, EventArgs e)
{

if (dec == 1)
{
total =Convert.ToDouble(txtpatalla.Text += ",1");
}
else if (men == 1)
{
total = Convert.ToDouble(txtpatalla.Text += "-1");
}
else
{
total = Convert.ToDouble(txtpatalla.Text += "1");
}
dec = 0;
men = 0;
txtpatalla.Visible = true;
txtpatalla2.Visible = false;

}

y ademas :

if (resta >= 1)
{
total = cal2 - total;
resta = 0;
txtpatalla.Text = Convert.ToString(total);
lblcalc.Text = Convert.ToString(total);

}



else if (suma >= 1)
{
total = cal1 + total;
suma = 0;
txtpatalla.Text = Convert.ToString(total);
lblcalc.Text = Convert.ToString(total);
}


else if (multiplicacion >= 1)
{
total = cal3 * total;
multiplicacion = 0;
txtpatalla.Text = Convert.ToString(total);
lblcalc.Text = Convert.ToString(total);
}

else if (division >= 1)
{
total = cal4 / total;
division = 0;
txtpatalla.Text = Convert.ToString(total);
lblcalc.Text = Convert.ToString(total);
}

por esto:

if (resta >= 1)
{
total = cal2-total;
resta = 0;


}



else if (suma >= 1)
{
total = cal1 + total;
suma = 0;

}


else if (multiplicacion >= 1)
{
total = cal3 * total;
multiplicacion = 0;

}

else if (division >= 1)
{
total = cal4 / total;
division = 0;

}
txtpatalla.Text = Convert.ToString(total);
lblcalc.Text = Convert.ToString(total);

en todas las partes donde se usa, ya voy a ver mas para sacar mas cosas, peor no lo voy a publicar porque sino este post va a durar hasta el 2008:p