2012-07-16 62 views
-3

我有一个文本框,其值为0.00,然后我得到了一个错误转换...但我 已经做了0.00不是从文本框,它的工作..如何修复这个问题?从十进制字符串的错误

Dim _Total, _Deduct, _Charges As String 
    Dim _sss, _tax, _pf, _ph, _loan, _others, _hdmf, _cola, _allowance As Decimal 

这行,如果文本框和注释此行是工作..但我用这个不工作..

_sss = txtSSS.Text : _ph = txtPH.Text : _tax = txtInTax.Text : _pf = txtPF.Text 
    _loan = txtLoan.Text : _hdmf = txtHDMF.Text : _others = txtOther.Text 
    _cola = txtCola.ToString : _allowance = txtAllowance.ToString 

这行是我给出的示例值...相同的值,但文本框没有工作..这是工作

'This code when I uncomment.. this work.. 
    '_sss = "0.00": _ph = "0.00" : _tax = "0.00" : _pf = "0.00" 
    '_loan = "0.00" : _hdmf = "50.00" : _others = "0.00" 
    '_cola = "0.00" : _allowance = "0.00" 

    _Charges = CDec(_cola) + CDec(_allowance) 
    _Deduct = CDec(_sss) + CDec(_tax) + CDec(_pf) + CDec(_ph) + CDec(_loan) + CDec(_hdmf) + CDec(_others) 

    _Total = CDec(_Charges) - CDec(_Deduct) 

    lblDeduct.Text = Format((_Deduct), "currency") 
    lblTotal.Text = FormatCurrency((_Total), 2, TriState.True, TriState.False, TriState.True) 

回答

1

使用Decimal.TryParse

<!-- language : lang-vb --> 
If Not Decimal.TryParse(txtSSS.Text, _sss) Then 
    ' do something if the value doesn't convert 
End If 

根据你的评论和玩你的代码,看看这是否适合你(我用0作为默认值)。如果您没有打开Option Strict,请为自己做个忙,然后这样做。

从以上Option Strict链路:

隐范围限制数据类型转换到仅扩大转换,不允许后期绑定,并禁止导致Object类型隐式类型。

Private Sub CalculateCurrency() 
    If Not Decimal.TryParse(txtSSS.Text, _sss) Then _sss = 0D 
    If Not Decimal.TryParse(txtPH.Text, _ph) Then _ph = 0D 
    If Not Decimal.TryParse(txtInTax.Text, _tax) Then _tax = 0D 
    If Not Decimal.TryParse(txtPF.Text, _pf) Then _pf = 0D 
    If Not Decimal.TryParse(txtLoan.Text, _loan) Then _loan = 0D 
    If Not Decimal.TryParse(txtHDMF.Text, _hdmf) Then _hdmf = 0D 
    If Not Decimal.TryParse(txtOther.Text, _others) Then _others = 0D 
    If Not Decimal.TryParse(txtCola.Text, _cola) Then _cola = 0D 
    If Not Decimal.TryParse(txtAllowance.Text, _allowance) Then _allowance = 0D 

    _Charges = CStr(_cola + _allowance) 

    _Deduct = CStr(_sss + _tax + _pf + _ph + _loan + _hdmf + _others) 

    _Total = CStr(CDec(_Charges) - CDec(_Deduct)) 

    lblDeduct.Text = Format((_Deduct), "currency") 
    lblTotal.Text = FormatCurrency((_Total), 2, TriState.True, TriState.False, TriState.True) 
End Sub 
+0

嗯..先生..什么,如果文本框的值是动态的,可以通过改变textchange ..我真的DNT有一个好主意如何工作的.. TY的答复.. – 2012-07-16 02:25:58

+0

@DeorwinBensurto把它放在TextBox的TextChanged事件 – 2012-07-16 02:27:21

+0

仍然不知道修复这个先生的好方法..我实际上使用货币价值计算..但仍然不能解决.. – 2012-07-16 02:51:49

相关问题