如何计算多个文本框?

How Can You Calculate Multiple Textboxes?

我的 Visual Studio C# 程序需要帮助。用户必须能够在四个空白文本框中输入一个值。当用户单击“计算”时,文本框中的数字应乘以它们的设定价格。换句话说,我希望这四个文本框与其价格相乘。

形式

这是计算代码。我设法让 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");
    }
}

表格如何计算

好的。我将尝试向您解释:

您的表单中有 8 个文本框。 它们都有一个标识符,如 textBox1、textBox2 等。

你想用 textBox1 乘以 textBox2。其他 3 对也是如此。然后将总数加起来并显示在消息框中。

我会尽量以正确的方式发送给您:

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 标识符替换为您表单中的标识符即可。

在您的 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 children。
  • 您可以接受系统错误显示在消息框中 用户而不是在某处登录。

因为这很快,所以可以扩展代码以删除一些假设并添加舍入。