2015-10-13 8 views
-1

CS1503 Аргумент 1: не удается преобразовать из «строки» до «межд»Аргумент 1: не удается преобразовать из «строки» до «межд» (маленькой ошибки просто не знает, как исправить)

Вот ошибка что я получаю.

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"); 
     } 

Вот код заказа

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; 
     } 
    } 

Я установил описание в качестве десятичного знака, я знаю, что это то, что я сделал неправильно, проблема в том, что я не знаю, как правильно его код. У кого-нибудь есть идея?

+1

Поскольку ваш конструктор 'clsOrder' с 3 параметром принимает' int' как первый параметр, а не 'string'. Если ваш текст действителен целым числом, вы можете проанализировать его на 'int' like' new clsOrder (int.Parse (txtDescription.Text) ... 'В следующий раз, пожалуйста, перечитайте свой код и свое сообщение об ошибке. Прочитайте его несколько раз, если вы этого не понимаете, google. Вы можете найти свой ответ намного быстрее с таким путем. Вы должны прочитать http://ericlippert.com/2014/03/05/how-to -debug-small-programs/от Eric Lippert. –

+0

Возможный дубликат [Как преобразовать String в Int?] (http://stackoverflow.com/questions/1019793/how-can-i-convert-string-to- int) – Sayse

+0

Вышеупомянутый дубликат был вторым результатом поиска для «не может преобразовать из« string »в« int »C#» – Sayse

ответ

1

Вы поставили неправильный заказ. Попробуйте

clsOrder cobjOrder = new clsOrder(
    Convert.ToInt32(txtQuantity.Text), 
    Convert.ToDecimal(txtPrice.Text), 
    Convert.ToDecimal(txtDescription.Text)); 
+3

'TryParse()' следует использовать вместо 'Parse' –

+0

The Caclulat e void часть кода верна, это как-то связано с частью clsOrder кода, я не правильно закодировал часть описания. Я работаю над решением. – Jake

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)); 

Это не кажется правильным, если смотреть на конструктор:

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

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

Это требует int, decimal, decimal, ваш вклад string, int, decimal

Он начинается с int, а затем ему необходимо 2 decimals. Так что мне кажется, что вы случайно ввели неправильные входы.

Что вам нужно:

 //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; 
} 

Кроме того, убедитесь вы измените Description на string!

Редактировать: Как предлагают некоторые люди, вы можете использовать TryParse. Существует много способов узнать, как это использовать. Это не ваш главный вопрос, поэтому я не буду с вами обманывать вас.

Смежные вопросы