嗨我有一个文本框,如果你使用小数字,如果你使用逗号,那么一些数学计算就完美了。我探索的第一个选项就是接受掩盖文本框中的数字和小数......但为什么呢?自从我们刚开始上学以来,我们中的一些人已经学会使用逗号...所以我的想法是有一个文本框,用于搜索逗号并将其转换为用户的小数。
我有以下代码,但作为示例,如果我输入2,5我的转换变为25.所以是的,我已将逗号转换为十进制但丢失了它的位置。因此,问题是如何通过正确的小数位置正确地进行转换?
If TextBox13.Text.Contains(",") Then
TextBox13.Text = Replace(TextBox13.Text, ",", ".")
dim test as double textbox1.text
msgbox(test)
End If
答案 0 :(得分:1)
为什么不将逗号视为非法入境。不管你是否阻止输入信件。
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(",", ".")
答案 1 :(得分:0)
您是否尝试将字符串转换为十进制或双精度?
Dim test as Decimal = CDec(textbox1.Text) 或者Dim测试为Double = CDbl(textbox1.Text)