我正在尝试使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,因为这是保持十进制值的唯一方法......
希望我解释了这一点,让大家明白。
任何帮助都将不胜感激。
答案 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
获得不同的结果,因为显示的代码仍会为