使用numericUpDown的数学函数会导致在textBox中显示错误的数字

时间:2017-09-22 08:16:35

标签: c# winforms math numericupdown

我遇到了textboxes和numericUpDown的问题。我从第一个textBox1(indBox)中取值,加上numericUpDown1中的数字,并将结果显示在另一个textBox2中。

我需要在第一个textBox中使用数字40000,但在结果textBox中,例如我有4000(三个零,而不是四个),直到我更改numericUpDown的值。只有在更改了值后,才能获得正确的数值。我在第一个文本框中使用TextChanged事件。和下一个代码:

    private void indBox_TextChanged(object sender, EventArgs e) //
    {
        try
        {
            textBox3.Text = Convert.ToString( Convert.ToInt16(indBox.Text) + Convert.ToInt16(numericUpDown1.Value));

        }
        catch (Exception)
        {
            toolStripStatusLabel1.Text = "Can not calculate";
        }
    }

请帮忙!谢谢! :)

2 个答案:

答案 0 :(得分:2)

Int16的最大值为32,76740,000超过最大值。

使用Int32

textBox3.Text = (int.Parse(indBox.Text) + (int)numericUpDown1.Value).ToString();

https://msdn.microsoft.com/en-us/library/system.int16.maxvalue(v=vs.110).aspx

答案 1 :(得分:0)

40000大于Int16 maximum value(32767)。您可以使用Int32代替,2147483647可以存储最多{{3}}的值:

textBox3.Text = Convert.ToString(Convert.ToInt32(indBox.Text) + Convert.ToInt32(numericUpDown1.Value));