2016-05-20 5 views
-2

Мне нужна помощь с моей программой в Visual Studio C#. Пользователь должен иметь возможность ввести значение в четыре пустых текстовых поля. Числа в текстовых блоках должны умножаться с установленными ценами, когда пользователь нажимает кнопку «Рассчитать». Другими словами, я хочу, чтобы четыре текстовых поля умножались с их ценой.Как вы можете вычислить несколько текстовых полей?

Форма

Form

Вот код расчета. Мне удалось получить текстовое поле Children 5-12 для вычисления.

private void btnCalculate_Click (object sender, EventArgs e) 
{ 
    int FirstTextBoxNumber; 
    int SecondTextBoxNumber; 
    int answer; 

    try 
    { 
     Convert.ToInt32(tbSecondNumber.Text); 
     FirstTextBoxNumber = int.Parse("2"); 
     SecondTextBoxNumber = int.Parse(tbSecondNumber.Text); 

     answer = FirstTextBoxNumber * SecondTextBoxNumber; 

     MessageBox.Show("Your total is £" + answer.ToString()); 
    } 
    catch (FormatException) 
    { 
     MessageBox.Show("Please enter a decimal value"); 
    } 
} 

Как форма вычисляет

Screenshot

+2

Тогда в чем проблема? –

+0

У меня возникли проблемы с попыткой рассчитать все текстовые поля вместе –

+0

замените ответ = часть на любой расчет, который вы хотите сделать (например, что вы сделали для первого и второго ящиков) –

ответ

0

Попробуйте следующее внутри btnCalculate_Click код:

 bool isNumeric = true; 
     double answer = 0; 
     double firstTextBoxNumber = 0; 
     double thirdTextBoxNumber = 0; 
     double fifthTextBoxNumber = 0; 
     double seventhTextBoxNumber = 0; 

     int secondTextBoxNumber = 0; 
     int fourthTextBoxNumber = 0; 
     int sixTextBoxNumber = 0; 
     int eightTextBoxNumber = 0; 

     try 
     { 
      if (String.IsNullOrWhiteSpace(tbFirstNumber.Text) || String.IsNullOrWhiteSpace(tbSecondNumber.Text) || String.IsNullOrWhiteSpace(tbThirdNumber.Text) || String.IsNullOrWhiteSpace(tbFourthNumber.Text) || String.IsNullOrWhiteSpace(tbFifthNumber.Text) || String.IsNullOrWhiteSpace(tbSixNumber.Text) || String.IsNullOrWhiteSpace(tbSeventhNumber.Text) || String.IsNullOrWhiteSpace(tbEightNumber.Text)) 
      { 
       isNumeric = false; 
      } 
      else 
      { 
       //Check if "Prices" are all Doubles 
       if (isNumeric) 
       { 
        isNumeric = double.TryParse(tbFirstNumber.Text.Replace("£", ""), out firstTextBoxNumber); 
       } 
       if (isNumeric) 
       { 
        isNumeric = double.TryParse(tbThirdNumber.Text.Replace("£", ""), out thirdTextBoxNumber); 
       } 
       if (isNumeric) 
       { 
        isNumeric = double.TryParse(tbFifthNumber.Text.Replace("£", ""), out fifthTextBoxNumber); 
       } 
       if (isNumeric) 
       { 
        isNumeric = double.TryParse(tbSeventhNumber.Text.Replace("£", ""), out seventhTextBoxNumber); 
       } 

       //Check if "Qty" are all Integers 
       if (isNumeric) 
       { 
        isNumeric = int.TryParse(tbSecondNumber.Text, out secondTextBoxNumber); 
       } 
       if (isNumeric) 
       { 
        isNumeric = int.TryParse(tbFourthNumber.Text, out fourthTextBoxNumber); 
       } 
       if (isNumeric) 
       { 
        isNumeric = int.TryParse(tbSixNumber.Text, out sixTextBoxNumber); 
       } 
       if (isNumeric) 
       { 
        isNumeric = int.TryParse(tbEightNumber.Text, out eightTextBoxNumber); 
       } 
      } 

      if (isNumeric) 
      { 
       answer = firstTextBoxNumber * secondTextBoxNumber; 
       answer += thirdTextBoxNumber * fourthTextBoxNumber; 
       answer += fifthTextBoxNumber * sixTextBoxNumber; 
       answer += seventhTextBoxNumber * eightTextBoxNumber; 

       MessageBox.Show("Your total is £" + answer.ToString()); 
      } 
      else 
      { 
       MessageBox.Show("Please enter a decimal value"); 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 

Try Catch блок был изменен, потому что вы должны обрабатывать только системные ошибки в Try блоках.

Пожалуйста, обратите внимание, я сделал следующие предположения:

  • Цена может измениться, и может быть изменен, чтобы включить центов и сотые центов.
  • Цена будет снимать только «£» и никаких других валютных логотипов.
  • Кол-во всегда будет int, так как у вас не может быть 1,5 детей.
  • Вы в порядке с системной ошибкой, отображаемой в окне сообщения, пользователю вместо того, чтобы быть зарегистрированным где-то.

Поскольку это было быстро, код можно было расширить, чтобы удалить некоторые предположения и добавить округление.

+0

Да, это работает. Спасибо! –

-1

OK. Я попытаюсь объяснить это вам:

У вас есть 8 текстовых полей в вашей форме. Все они имеют идентификатор, такой как textBox1, textBox2 и т. Д.

Что вы хотите взять textBox1 и умножить на textBox2. И это то же самое для остальных трех пар. Затем добавьте общее количество и отобразите его в messageBox.

Постараюсь отправить вам правильный путь:

private void btnCalculate_Click (object sender, EventArgs e) 
{ 
    int FirstPrice, SecondPrice, ThirdPrice, FourthPrice; 
    int FirstQnty, SecondQnty, ThirdQnty, FourthQnty; 
    int answer = 0; 

    try 
    { 
     FirstPrice = (int)TextBox1.Text.Replace("£", ""); 
     SecondPrice = (int)TextBox2.Text; 
     ThirdPrice = (int)TextBox3.Text.Replace("£", ""); 
     FourthPrice = (int)TextBox4.Text; 
     FirstQty = (int)TextBox5.Text.Replace("£", ""); 
     SecondQty = (int)TextBox6.Text; 
     ThirdQty = (int)TextBox7.Text.Replace("£", ""); 
     FourthQty = (int)TextBox8.Text; 

     answer = FirstPrice * FirstQty; 
     answer += SecondPrice * SecondQty; 
     answer += ThirdPrice * ThirdQty; 
     answer += FourthPrice * FourthQty; 

     MessageBox.Show("Your total is £" + answer.ToString()); 
    } 
    catch (FormatException) 
    { 
     MessageBox.Show("Please enter a decimal value"); 
    } 
    } 

Это может содержать некоторые орфографические ошибки, но он должен работать. Просто замените идентификаторы TextBox на те, которые указаны в вашей форме.

+0

Что происходит, если E находится в текстовом значении для нечетных ячеек. –

+0

Затем мы обрезаем его. Я включу его в код. Хорошая точка Marshall –

+0

что-то еще, чтобы рассмотреть, что вы не можете гарантировать, что пользователь вводит в текстовые поля, является числовым. –

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