VB.net 将 , 转换为十进制(放置顺序)

VB.net convert , to decimal (order of placement)

你好,我有一个文本框,如果你使用小数,它可以完美地进行一些数学计算,如果你使用逗号,那么就不行了。我探索的第一个选项是只接受蒙面文本框中的数字和小数...但是为什么?我们中的一些人从刚开始上学就学会了使用逗号...所以我的想法是有一个文本框来搜索逗号并将它们转换为用户的小数。

我有以下代码,但作为示例,如果我输入 2,5,我的转换将变为 25。所以是的,我已将逗号转换为十进制,但丢失了它的位置。因此,问题是如何使用正确的小数位正确进行转换?

If TextBox13.Text.Contains(",") Then
TextBox13.Text = Replace(TextBox13.Text, ",", ".")
dim test as double textbox1.text
msgbox(test)
End If

您是否尝试过将字符串转换为十进制或双精度?

Dim test as Decimal = CDec(textbox1.Text) Or Dim test as Double= CDbl(textbox1.Text)

为什么不让逗号成为非法条目。无论如何你都不阻止输入字母。

Private Sub textBox1_KeyPress(sender As Object, e As KeyPressEventArgs)
    e.Handled = SingleDecimal(sender, e.KeyChar)
End Sub

Public Function SingleDecimal(sender As System.Object, eChar As Char) As Boolean
    Dim chkstr As String = "0123456789."
    If chkstr.IndexOf(eChar) > -1 OrElse eChar = Constants.vbBack Then
        If eChar = "." Then
            If DirectCast(sender, TextBox).Text.IndexOf(eChar) > -1 Then
                Return True
            Else
                Return False
            End If
        End If
        Return False
    Else
        Return True
    End If
End Function

其他解决方案可能是用字符串中的点替换逗号,然后将其传回文本框。

If TextBox13.Text.Contains(",") Then
dim tempStr as string = TextBox13.Text
TextBox13.Text = Replace(tempStr, ",", ".")
dim test as double textbox1.text
msgbox(test)
End If

而且无论如何不应该这样写:

TextBox13.Text = tempStr.Replace(",", ".")