Exemplo n.º 1
0
        private void btn_igual_Click(object sender, EventArgs e)
        {
            try
            {
                /*inicializo el conversor y el operador que me permitiran llevar a delante la logica del calculo*/

                Conversiones conversor = new Conversiones();
                Operacion    operador  = new Operacion();

                if (txb_visor.Text != "" && lbl_terminoUno.Text != "")
                {
                    lbl_terminoDos.Text = txb_visor.Text; /*se almacena este dato en el caso de luego querer incorporar alguna
                                                           * funcionalidad relacionada al recalculo en base a un resultado ya obtenido*/

                    switch (lbl_operador.Text)
                    {                                   /*se convierte a decimal lo ingresado en el visor. Luego en una variable de tipo
                                                         * ResultadoDeOPeracion se guarda el resultado de la operacion, ya sea un error o el total numerico*/
                    case "X":
                    {
                        int factor1 = conversor.Hex_a_Decimal(lbl_terminoUno.Text);
                        int factor2 = conversor.Hex_a_Decimal(lbl_terminoDos.Text);
                        ResultadoDeOperacion producto;
                        producto = operador.Multiplicacion(factor1, factor2);
                        if (!producto.reportaError)
                        {
                            txb_visor.MaxLength = 32;                                               /* Si no da error la operacion se convierte el resultado a hexadecimal*/
                            txb_visor.Text      = conversor.Decimal_a_Hex(producto.resultado);      /*y se muestra en pantalla*/

                            lbl_terminoUno.Text = "";
                            lbl_operador.Text   = "";

                            txb_visor.Enabled  = false;
                            this.ActiveControl = btn_reestablece;
                            btn_reestablece.Focus();
                            btn_suma.Enabled           = false;
                            btn_resta.Enabled          = false;
                            btn_division.Enabled       = false;
                            btn_multiplicacion.Enabled = false;
                        }
                        else
                        {
                            MessageBox.Show(producto.descripcionError, "Aviso", MessageBoxButtons.OK);         /* caso contrario se dispara un aviso*/
                        }

                        break;
                    }

                    case "/":
                    {
                        Validaciones validador = new Validaciones();

                        int dividendo = conversor.Hex_a_Decimal(lbl_terminoUno.Text);
                        int divisor   = conversor.Hex_a_Decimal(lbl_terminoDos.Text);
                        if (!validador.DivisionPorCero(divisor))
                        {
                            ResultadoDeOperacion cociente;
                            cociente = operador.Division(dividendo, divisor);
                            if (!cociente.reportaError)
                            {
                                txb_visor.MaxLength = 32;
                                txb_visor.Text      = conversor.Decimal_a_Hex(cociente.resultado);


                                lbl_terminoUno.Text = "";
                                lbl_operador.Text   = "";

                                txb_visor.Enabled  = false;
                                this.ActiveControl = btn_reestablece;
                                btn_reestablece.Focus();
                                btn_suma.Enabled           = false;
                                btn_resta.Enabled          = false;
                                btn_division.Enabled       = false;
                                btn_multiplicacion.Enabled = false;
                            }
                            else
                            {
                                MessageBox.Show(cociente.descripcionError, "Aviso", MessageBoxButtons.OK);
                            }
                        }
                        else
                        {
                            txb_visor.Text      = "Error division por cero";
                            txb_visor.Enabled   = false;
                            lbl_terminoUno.Text = "";
                            lbl_terminoDos.Text = "";
                            lbl_operador.Text   = "";
                            this.ActiveControl  = btn_reestablece;
                            btn_reestablece.Focus();
                            btn_suma.Enabled           = false;
                            btn_resta.Enabled          = false;
                            btn_division.Enabled       = false;
                            btn_multiplicacion.Enabled = false;
                        }
                        break;
                    }

                    case "+":
                    {
                        int sumando1 = conversor.Hex_a_Decimal(lbl_terminoUno.Text);
                        int sumando2 = conversor.Hex_a_Decimal(lbl_terminoDos.Text);

                        ResultadoDeOperacion suma = operador.Suma(sumando1, sumando2);


                        if (!suma.reportaError)
                        {
                            txb_visor.MaxLength = 32;
                            txb_visor.Text      = conversor.Decimal_a_Hex(suma.resultado);



                            lbl_terminoUno.Text = "";
                            lbl_operador.Text   = "";

                            txb_visor.Enabled  = false;
                            this.ActiveControl = btn_reestablece;
                            btn_reestablece.Focus();
                            btn_suma.Enabled           = false;
                            btn_resta.Enabled          = false;
                            btn_division.Enabled       = false;
                            btn_multiplicacion.Enabled = false;
                        }
                        else
                        {
                            MessageBox.Show(suma.descripcionError, "Aviso", MessageBoxButtons.OK);
                        }
                        break;
                    }

                    case "-":
                    {
                        int minuendo   = conversor.Hex_a_Decimal(lbl_terminoUno.Text);
                        int sustraendo = conversor.Hex_a_Decimal(lbl_terminoDos.Text);


                        ResultadoDeOperacion diferencia = operador.Resta(minuendo, sustraendo);
                        if (!diferencia.reportaError)
                        {
                            txb_visor.MaxLength = 32;
                            txb_visor.Text      = conversor.Decimal_a_Hex(diferencia.resultado);



                            lbl_terminoUno.Text = "";
                            lbl_operador.Text   = "";

                            txb_visor.Enabled  = false;
                            this.ActiveControl = btn_reestablece;
                            btn_reestablece.Focus();
                            btn_suma.Enabled           = false;
                            btn_resta.Enabled          = false;
                            btn_division.Enabled       = false;
                            btn_multiplicacion.Enabled = false;
                        }
                        else
                        {
                            MessageBox.Show(diferencia.descripcionError, "Aviso", MessageBoxButtons.OK);
                        }
                        break;
                    }

                    default:
                        break;
                    }
                }
            }


            catch (Exception)
            {
                throw;
            }
        }