CS1503 Argumento 1: no se puede convertir de ‘cadena’ a ‘int’

Aquí es el Error que estoy recibiendo.

 private void btnCalculate_Click(object sender, EventArgs e)
    {
        string strMailingLabel;

        try
        {
            //Create an instance of clsCustomer using the overloaded constructor
            clsCustomer cobjCustomer = new clsCustomer(txtName.Text, txtStreet.Text,
                                txtCity.Text, txtState.Text, txtZip.Text);


            strMailingLabel = cobjCustomer.Name + "\n" +
                              cobjCustomer.Street + "\n" +
                              cobjCustomer.City + ", " +
                              cobjCustomer.State + "  " + cobjCustomer.Zip;

            //Display mailing address
            lblMailingLabel.Text = strMailingLabel;

            //Create an instance of clsOrder using the overloaded constructor
            clsOrder cobjOrder = new clsOrder
                (txtDescription.Text,                 //Error is Here
                 int.Parse(txtQuantity.Text),
                 decimal.Parse(txtPrice.Text));


            cobjOrder.calcExtendedPrice();


            cobjOrder.accumulateTotals();


            lblExtension.Text = cobjOrder.ExtendedPrice.ToString("C");


            lblTotalCount.Text = clsOrder.TotalCount.ToString("N0");
            lblTotalPrice.Text = clsOrder.TotalPrice.ToString("C");
        }

Aquí está el Código de Orden

public clsOrder()
    {

    }
    public clsOrder(int intQuantity, decimal decPrice, decimal decDescription)
    {

        this.Quantity = intQuantity;
        this.Price = decPrice;
        this.Description = decDescription;
    }


//declare property methods

    public int Quantity
    {
        get
        {
            return cintQuantity;
        }
        set
        {
            cintQuantity = value;
        }
    }

    public decimal Price
    {
        get
        {
            return cdecPrice;
        }
        set
        {
            cdecPrice = value;
        }
    }

    public decimal Description
    {
        get
        {
            return cdecDescription;
        }
        set
        {
            cdecDescription = value;
        }
    }

Me puse la descripción como un decimal, yo sé que es lo que hice mal, el problema es que no sabe el código correctamente. Alguien tiene una idea?

Debido a su clsOrder constructor con 3 parámetro toma int como primer parámetro, no string. Si su texto es válido entero, se puede analizar a int como new clsOrder(int.Parse(txtDescription.Text)... la Próxima vez, por favor vuelva a leer el código y mensaje de error. Entender su mensaje de error. Leerlo un par de veces. Si usted no entiende, de google. Usted puede encontrar su respuesta mucho más rápido con esta forma. Usted debe leer ericlippert.com/2014/03/05/how-to-debug-small-programs de Eric Lippert.
Posibles duplicados de ¿Cómo puedo convertir de String a Int?
El de arriba duplicar fue el segundo resultado de la búsqueda de «no se puede convertir de string a int c#»
Hmm todas las respuestas que dio lugar a más errores o simplemente no funcionan. Al Calcular el vacío es totalmente correcta, su algo mal con el clsOrder Código.

OriginalEl autor Jake | 2015-10-13

2 Comentarios

  1. 1

    Que han puesto orden equivocado. Pruebe este

    clsOrder cobjOrder = new clsOrder(
      Convert.ToInt32(txtQuantity.Text),
      Convert.ToDecimal(txtPrice.Text),
      Convert.ToDecimal(txtDescription.Text));
    TryParse() debe ser utilizado en lugar de Parse
    El Caclulate anular parte del código es correcto, tiene algo que ver con el clsOrder porción de código, yo no código de la descripción de la porción correctamente. Estoy trabajando en una solución.

    OriginalEl autor Harshit Shrivastava

  2. 0
            //Create an instance of clsOrder using the overloaded constructor
            clsOrder cobjOrder = new clsOrder
                (txtDescription.Text,                 //Error is Here
                 int.Parse(txtQuantity.Text),
                 decimal.Parse(txtPrice.Text));

    No parece a la derecha cuando se mira en el constructor:

    public clsOrder(int intQuantity, decimal decPrice, decimal decDescription)
    {
    
        this.Quantity = intQuantity;
        this.Price = decPrice;
        this.Description = decDescription;
    }

    Requiere int, decimal, decimal, su entrada es string, int, decimal

    Se inicia con un int y, a continuación, se necesita 2 decimals.
    Así que me parece que accidentalmente introducido mal entradas.

    Lo que usted necesita es:

            //Create an instance of clsOrder using the overloaded constructor
            clsOrder cobjOrder = new clsOrder
                (int.Parse(txtQuantity.Text),                 //Error is Here
                 decimal.Parse(txtPrice.Text)),
                 txtDescription.Text);
    
    
    public clsOrder(int intQuantity, decimal decPrice, string decDescription)
    {
    
        this.Quantity = intQuantity;
        this.Price = decPrice;
        this.Description = decDescription;
    }

    También asegúrese de cambiar el Description a string!

    Edit: Como algunos sugieren, puede que desee utilizar TryParse. Hay mucho para encontrar acerca de cómo utilizar este. Que no es tu pregunta principal, así que no voy a spoonfed con eso.

    OriginalEl autor kevintjuh93

Dejar respuesta

Please enter your comment!
Please enter your name here