NumericUpDown设置小数点?

时间:2013-11-27 01:53:43

标签: vb.net

我正在尝试使NumericUpDown框设置文本框的小数点,并在每次单击它时更新。我尝试了两种不同的方式:

Me.txtCalc.Text = FormatNumber(Me.txtCalc.Text, Me.NumericUpDown1.Value)

这种方式有效但在增加值时不保留小数值。因此,如果文本框说2并且真的应该是2.987899。我将NumericUpDown框从0更改为6,它只显示:2.000000。

我也是这样尝试的(我认为我做错了..)

Me.txtCalc.Text = Math.Round(CDec(Me.txtCalc.Text), CInt(Me.NumericUpDown1.Value))

这是我能做任何事情的唯一方法。当我尝试这个时,每次点击vlaue上升,它绝对没有。但如果我先将它设置为7 然后添加一些值,如:2.987899;当我从7点击到1时,它一次删除一个点就像它应该......它只是没有回来。一点都不。

我假设我 使用Math.Round,因为这是保持十进制值的唯一方法......

希望我解释了这一点,让大家明白。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

Me.txtCalc.Text = FormatNumber(Me.txtCalc.Text, Me.NumericUpDown1.Value)

这不仅会格式化值,还会重置下一次迭代的起始值。假设以小数点开始下降2.987899,则更改VALUE:

2.98789
2.9878
2.987
..
2.

当为“2”分配给TB时,上升的起始值为2.您丢失了剩余的小数。您需要存储十进制变量并格式化,以便根据需要上下移动:

Dim decVal As Decimal = 2.987899 

Private Sub NumericUpDown1_ValueChanged(ByVal sender As System.Object, _
             ByVal e As System.EventArgs) Handles NumericUpDown1.ValueChanged

    ' now, I am not changing the underlying VALUE, just the format
    TB1.Text = FormatNumber(decVal, NumericUpDown1.Value)
End Sub

我不确定您如何使用Math.Round获得不同的结果,因为显示的代码仍会分配一个新的,其中包含更少的小数和因此失去了。