• Lunes 18 de Noviembre de 2024, 03:54

Autor Tema:  Ayudenme a mejorar este codigo con algun clase  (Leído 1782 veces)

es_binario

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Ayudenme a mejorar este codigo con algun clase
« en: Miércoles 11 de Agosto de 2010, 22:56 »
0
Mi primer duda tengo un pequeño cotizador hecho en c# 2008 que uso en el load del form le pongo unos valores a los textbox por defecto para iniciar una cotizacion.

 private void Form1_Load(object sender, EventArgs e)
        {
            TxtIva.Text = "16";
            TxtTipoCambio.Text = "13";
            TxtCantidad.Text = "1";
            TxtEnvio.Text = "130";
            TxtGanancia.Text = "100";
        }

Bueno en el codigo anterior mi duda es la siguiente como puedo usar este mismo metodo del laad form o como debiar declararlo para que una vez que termine una cotizacion lo use como para limpiar el form.


Luego tengo un boton ue calcula los datos
Tengo 2 textbox uno para los dolares y otro para los pesos, primero el programa intenta con los dolares si no hay con los pesos y en cualquier error me da un mensage

private void CmdCalcular_Click(object sender, EventArgs e)
        {
            try
            {
                // primero intento el calculo con dolares
                double dolar_ = Convert.ToDouble(TxtDolares.Text);
                double tipo_cambio_ = Convert.ToDouble(TxtTipoCambio.Text);
                double ganancia_ = Convert.ToDouble(TxtGanancia.Text);
                double iva_ = 1 + (Convert.ToDouble(TxtIva.Text) / 100);
                double envio_ = Convert.ToDouble(TxtEnvio.Text);
                double total = 0;
                double cantidad_ = Convert.ToDouble(TxtCantidad.Text);
                total = (dolar_ * cantidad_ * tipo_cambio_ * iva_) + (envio_ + ganancia_);
                LblTotal.Text = Convert.ToString(total);
            }
            catch (Exception ex)
            {
                // intena con pesos se le da prioridad al dolar
                try
                {
                    double tipo_cambio_ = Convert.ToDouble(TxtTipoCambio.Text);
                    double ganancia_ = Convert.ToDouble(TxtGanancia.Text);
                    double iva_ = 1 + (Convert.ToDouble(TxtIva.Text) / 100);
                    double envio_ = Convert.ToDouble(TxtEnvio.Text);
                    double total = 0;
                    double cantidad_ = Convert.ToDouble(TxtCantidad.Text);
                    double pesos_ = Convert.ToDouble(TxtPesos.Text);
                    total = (pesos_ * cantidad_ * iva_) + (envio_ + ganancia_);
                    LblTotal.Text = Convert.ToString(total);
                }
                catch ( Exception exx)
                {
                    MessageBox.Show("Uno o mas datos no son validos");
                }
            }
        }

Bueno lo primero que se van a dar cuenta es que tube que repetir en el segundo try la declaracion de variables por que no se como hacerle, si no lo hago si simplemente me aparecen un monton de errores por variables no declaradas.

Yo soy programador de Foxpro y ese lo manejo al derecho y al revez, pero estoy intentando aprender c#, por eso me gustaria que me diesen una orientada de como debo declarar las sentencias anteiores para no trabajar de mas y ademas mal, por no saber usar bien el lenguje, no se si tenga que ser con una cracion de clase, cualquier ayuda se los agradezco.

Por cierto funcona, pero se que esta mal planeteado mi codigo.
Saludos.

tannke

  • Miembro MUY activo
  • ***
  • Mensajes: 152
  • Nacionalidad: es
    • Ver Perfil
Re: Ayudenme a mejorar este codigo con algun clase
« Respuesta #1 en: Jueves 12 de Agosto de 2010, 11:40 »
0
Muy buenas, vamos por partes haber si puedo aclararte algo.
Respecto al problema de tener que declarar las variables dos veces es porque las declaras directamente dentro del try, y una vez sales de ese estas variables desaparecen, es decir solo valen para el try.
Podrias hacer:
Código: C#
  1.  
  2. private void CmdCalcular_Click(object sender, EventArgs e)
  3. {
  4. double dolar_, tipo_cambio, ganancia_, iva_, envio_, total, cantidad_;
  5. try
  6. {
  7. // primero intento el calculo con dolares
  8. dolar_ = Convert.ToDouble(TxtDolares.Text);
  9. tipo_cambio_ = Convert.ToDouble(TxtTipoCambio.Text);
  10. ganancia_ = Convert.ToDouble(TxtGanancia.Text);
  11. iva_ = 1 + (Convert.ToDouble(TxtIva.Text) / 100);
  12. envio_ = Convert.ToDouble(TxtEnvio.Text);
  13. total = 0;
  14. cantidad_ = Convert.ToDouble(TxtCantidad.Text);
  15. total = (dolar_ * cantidad_ * tipo_cambio_ * iva_) + (envio_ + ganancia_);
  16. LblTotal.Text = Convert.ToString(total);
  17. }
  18. catch (Exception ex)
  19. {
  20. // intena con pesos se le da prioridad al dolar
  21. try
  22. {
  23. tipo_cambio_ = Convert.ToDouble(TxtTipoCambio.Text);
  24. ganancia_ = Convert.ToDouble(TxtGanancia.Text);
  25. iva_ = 1 + (Convert.ToDouble(TxtIva.Text) / 100);
  26. envio_ = Convert.ToDouble(TxtEnvio.Text);
  27. total = 0;
  28. cantidad_ = Convert.ToDouble(TxtCantidad.Text);
  29. pesos_ = Convert.ToDouble(TxtPesos.Text);
  30. total = (pesos_ * cantidad_ * iva_) + (envio_ + ganancia_);
  31. LblTotal.Text = Convert.ToString(total);
  32. }
  33. catch ( Exception exx)
  34. {
  35. MessageBox.Show("Uno o mas datos no son validos");
  36. }
  37. }
  38. }
  39.  

En el caso que necesites una variable que puedas acceder desde todos los metodos(variable global), debes declararla fuera de ellos.

Ahora sobre tu primera pregunta, la de limpiar el form, entiendo que quieres utilizar un botón. Si se podria utilizar el mismo metodo, pero yo te recomiendo utilizar otro nuevo, algo asi:
Código: C#
  1.  
  2. private void Form1_Load(object sender, EventArgs e)
  3. {
  4. limpiar();
  5. }
  6.  
  7. private void BotonLimiar_Click(object sender, EventArgs e)
  8. {
  9. limiar();
  10. }
  11.  
  12. private void limpiar()
  13. {
  14. TxtIva.Text = "16";
  15. TxtTipoCambio.Text = "13";
  16. TxtCantidad.Text = "1";
  17. TxtEnvio.Text = "130";
  18. TxtGanancia.Text = "100";
  19. }
  20.  
  21.  
Ahun se puede simplificar mucho mas, pero esto te lo dejo a ti, espero te sea de utilidad. Un saludo

es_binario

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Ayudenme a mejorar este codigo con algun clase
« Respuesta #2 en: Jueves 12 de Agosto de 2010, 20:07 »
0
Gracias me sirbio de mucho tu ayuda, no sabia eso del try respecto a las variables.

ahora si me puedes decir como pones el codigo en esa libretita ya que se vee mas claro.

Gracias de nuevo

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: Ayudenme a mejorar este codigo con algun clase
« Respuesta #3 en: Jueves 12 de Agosto de 2010, 22:15 »
0
Cita de: "es_binario"
ahora si me puedes decir como pones el codigo en esa libretita ya que se vee mas claro.

Simplemente encierras tu codigo en etiquetas [ code] [ /code] (sin espacio en los corchetes), o si te fijas cuando publicas o respondes un mensaje aparece una barra de herramientas, hay una que dice  code que esta junto a la que dice quote, entonces selecciones tu texto, eliges code y de que lenguaje (Assembly, C, C++, etc.) quieres que te resalte el texto y eso es todo.

Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

es_binario

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Ayudenme a mejorar este codigo con algun clase
« Respuesta #4 en: Viernes 13 de Agosto de 2010, 00:47 »
0
Muchas Gracias profesor

ahora si se como vas esto y ahora mismo lo voy a probar con un nuevo post lleno de alguanas dudas. Gracias.