Vb.net NumericUpDown设置小数点?

Vb.net NumericUpDown设置小数点?,vb.net,Vb.net,我试图让一个NumericUpDown框设置文本框的小数点,并在每次单击向上或向下时更新它。我试过两种不同的方法: Me.txtCalc.Text = FormatNumber(Me.txtCalc.Text, Me.NumericUpDown1.Value) 这种方法可以工作,但当我增加值时,它不会保留十进制值。所以如果文本框上写的是2,实际上应该是2.987899。我将NumericUpDown框从0更改为6,它所做的只是显示:2.000000 我也试过这样做(我认为我做错了…) 这是我唯

我试图让一个NumericUpDown框设置文本框的小数点,并在每次单击向上或向下时更新它。我试过两种不同的方法:

Me.txtCalc.Text = FormatNumber(Me.txtCalc.Text, Me.NumericUpDown1.Value)
这种方法可以工作,但当我增加值时,它不会保留十进制值。所以如果文本框上写的是2,实际上应该是2.987899。我将NumericUpDown框从0更改为6,它所做的只是显示:2.000000

我也试过这样做(我认为我做错了…)

这是我唯一能让它做任何事情的方法。当我试着这样做的时候,每次我点击vlaue向上,它都毫无作用。但是如果我先将其设置为7,然后再添加一些值,比如:2.987899;当我从7点单击到1点时,它会像应该的那样一次删除一个点。。。它就是回不去了。一点也不

我假设我有使用数学。四舍五入,因为这是它保持十进制值的唯一方法

希望我能解释给你们听

任何帮助都将不胜感激

Me.txtCalc.Text = FormatNumber(Me.txtCalc.Text, Me.NumericUpDown1.Value)
这不仅格式化了值,还重置了下一次迭代的起始值。假设起始值为2.987899,以小数位递减,则会更改该值:

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
获得不同的结果,因为显示的代码仍然一个新的值分配给TB,小数位数更少,因此会丢失。

为什么不使用NumericUpDown设置/获取值,并跳过TB-Min,Max,Value和Increment都是十进制的,我不知道你的意思。好吧,当你从7到1,你不仅仅是把一个值格式化成X位,你还在改变这个值。当它变为0时,文本为
2
,值为2。它也不能是2.987899或其他任何值,除非您将该值存储在变量中,并将其格式化/t字符串保存在文本框中。它无法“返回”,因为值已更改:
Me.txtCalc.Text=FormatNumber…
更改下一次返回的值。。。NUD可以编辑一个十进制值,如果这是您最终想要的。但是当我使用数学时,它保留小数点。问题是,代码不会使十进制值增加NumericUpDown的值,它只会减少该值。。
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