none
Tengo un problema con convertir un objeto de tipo 'System.Windows.Forms.TextBox' al tipo 'System.IConvertible'. RRS feed

  • Pregunta

  • Estoy haciendo un trabajo de simulación de remuneraciones y en el código del form1 está el problema, puesto que decidí convertir el textbox en double porque en mi clase de  FuncionsMetodos los recibirá como Double e cuando lo simulo no me toma convertir un objeto de tipo 'System.Windows.Forms.TextBox' al tipo 'System.IConvertible'. ... U otro parecido. 

    Incluso cuando veo si está recibiendo algún dato vacio... ya lo validé para que eso no pasara, puesto que Si no rellena se convertirá en "0".

    // DESCUENTOS
                        //Cotización AFP
                        txt_DCotizaAFP.Text = String.Format("{0:n2}", Convert.ToString(AA.CotiAFP(CBx_AFP.Text, txt_THImpo.Text)));
                        //Cotización Voluntaria AFP
                        if (txt_DCVolunAFP.Text == "")
                        {
                            txt_DCVolunAFP.Text = "0";
                        }
                        // COTIZACION PACTADA DE SALUD
                        if (CBx_Salud.Text.Equals("FONASA"))
                        {
                            txt_DCPactaSalu.Text = String.Format("{0:n2}", Convert.ToString(AA.CotiPacdSaludF(txt_SB.Text)));
                        }
                        if (CBx_Salud.Text.Equals("ISAPRE"))
                        {
                            ISAPRE NN = new ISAPRE();
                            txt_DCPactaSalu.Text = String.Format("{0:n2}", Convert.ToString(NN.CotiPacdSaludI()));
                        }
                        // SEGURO CESANTIA E IMPUESTO UNICO
                        if (CBx_TdContrato.Text == "INDEFINIDO")
                        {
                            txt_DSegCesan.Text = String.Format("{0:n2}", Convert.ToString(AA.SegCesan(txt_THImpo.Text)));
                            double JDVG = AA.ImpuestoUnico(txt_SB.Text);
                            if (JDVG < 0)
                            {
                                txt_ImpUnico.Text = String.Format("{0:n2}", Convert.ToString(JDVG));
                            }
                            else
                            {
                                txt_ImpUnico.Text = "0";
                            }
                        }
                        if (txt_DAnticipos.Text =="")
                        {
                            txt_DAnticipos.Text = "0";
                        }
                        if (txt_DPrestamos.Text=="")
                        {
                            txt_DPrestamos.Text="0";
                        }
                        if (txt_DAhorroV.Text.Equals(""))
                        {
                            txt_DAhorroV.Text="0";
                        }
                        if (txt_DRetencionJ.Text.Equals(""))
                        {
                            txt_DRetencionJ.Text = "0";
                        }
                        //TOTAL DESCUENTOS He aqui que me marca error
                        txt_TDescuentos.Text = string.Format("{0:n2}", AA.Descuentos(Convert.ToDouble(txt_DCotizaAFP.Text), Convert.ToDouble(txt_DCVolunAFP.Text), Convert.ToDouble(txt_DCPactaSalu.Text), Convert.ToDouble(txt_DDiferPlanSalu), Convert.ToDouble(txt_DSegCesan.Text), Convert.ToDouble(txt_ImpUnico.Text), Convert.ToDouble(txt_DAnticipos.Text), Convert.ToDouble(txt_DPrestamos.Text), Convert.ToDouble(txt_DAhorroV.Text), Convert.ToDouble(txt_DRetencionJ)));
                        //RESULTADO
                        string RESUL = Convert.ToString(AA.TOTALTOTAL(txt_TH.Text, txt_TDescuentos.Text));
                        MessageBox.Show("El Sueldo de " + txt_Name.Text + " es $" + RESUL + ".");

    miércoles, 1 de mayo de 2019 14:34

Respuestas

  • > convertir un objeto de tipo 'System.Windows.Forms.TextBox' al tipo 'System.IConvertible'.

    Incluso antes de examinar tu c'odigo, solo con ver el mensaje de error esta claro lo que te ocurre: Se te ha olvidado escribir ".Text" detras del nombre de alguno de los textboxes, y por eso esta intentando convertir el TextBox (que no se puede) en lugar de convertir el texto del texbox (que seguramente es lo que querias hacer).

    Por ejemplo, un sitio donde te ocurre eso es aqui:

    Convert.ToDouble(txt_DRetencionJ)

    Solo tienes que agregar .Text detras del txt_DRetencionJ, y lo mismo en los otros sitios en los que se use un textbox sin .Text.

    miércoles, 1 de mayo de 2019 14:52
    Moderador