将2个文本框值相乘并显示在第3个文本框中

时间:2014-03-22 20:12:39

标签: c#

我正在尝试将2个数字相乘(每个文本框中有一个)并显示在另一个文本框中 当我输入数字时,没有任何反应。 textBox8显示“2.50”,textBox 10显示“5”。

private void textBox8_TextChanged(object sender, EventArgs e)
        {
            Multiply();
        }

        private void textBox10_TextChanged(object sender, EventArgs e)
        {
            Multiply();
        }

        public void Multiply()
        {
            int a, b;

            bool isAValid = int.TryParse(textBox8.Text, out a);
            bool isBValid = int.TryParse(textBox10.Text, out b);

            if (isAValid && isBValid)
                textBox7.Text = (a * b).ToString();

            else
                textBox7.Text = "Invalid input";
        }

4 个答案:

答案 0 :(得分:0)

使用double.TryParse

double a, b;

bool isAValid = double.TryParse(textBox8.Text.Trim(), out a);
bool isBValid = double.TryParse(textBox10.Text.Trim(), out b);

if (isAValid && isBValid)
    textBox7.Text = (a * b).ToString();

else
    textBox7.Text = "Invalid input";

答案 1 :(得分:0)

The numbers in textBox8 are (for example) 2.50, and textBox 10 is 2

2.50是十进制值,无法解析为int

int.TryParse更改为decimal.TryParse

 int a, b;

 bool isAValid = int.TryParse(textBox8.Text, out a);
 bool isBValid = int.TryParse(textBox10.Text, out b);

 decimal a, b;

 bool isAValid = decimal.TryParse(textBox1.Text, out a);
 bool isBValid = decimal.TryParse(textBox2.Text, out b);

答案 2 :(得分:0)

  

textBox8中的数字是(例如)2.50,textBox 10是2。

Int32.TryParse(String s, out int) overload使用NumberStyle.Integer CurrentCulture属性。这就是您2.50失败和isAValid失败的原因false。使用NumberStyle.Integer,您的字符串只能包含;

  • 领先的白色空间。
  • 尾随空格。
  • 带正面或负面的迹象。

这就是isAValid && isBValidfalse(无论isBValid是什么)和 else语句的原因。

作为解决方案,您可以使用Double.TryParse方法,NumberStyles.Float| NumberStyles.AllowThousandsCurrentCulture一样;

double a;
bool isAValid = Double.TryParse(textBox8.Text, out a);

答案 3 :(得分:-1)

这应该有效:

    private void textBox8_TextChanged(object sender, EventArgs e)
    {
        Multiply();
    }

    private void textBox10_TextChanged(object sender, EventArgs e)
    {
        Multiply();
    }

    public void Multiply()
    {
        float a, b;

        bool isAValid = float.TryParse(textBox8.Text, out a);
        bool isBValid = float.TryParse(textBox10.Text, out b);

        if (isAValid && isBValid)
            textBox7.Text = (a * b).ToString();
        else
            textBox7.Text = "Invalid input";
    }

当然,如其他答案所述,您可以使用小数或双倍,这一切都取决于您想要的精度:
float :单精度浮点(32位) double :双精度浮点(64位) 十进制:128位浮点
最好的问候!