我正在尝试使用事件文本框更改,但出现错误“输入字符串的格式不正确”
我的代码有问题吗?
或
我的代码实现有问题吗?
请指导我
谢谢
Public Class Payment
Private salesservices As New SalesService()
Private Sub Payment_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim sales = salesservices.GetSales(LblInvono.Text)
LabelTotalvalue.Text = sales.Totalinv.ToString("N0")
txtDiscount.Text = sales.DiscountTotal.ToString("N0")
txtPayment.Text = (sales.CashPayment + sales.NCashPayment).ToString("N0")
LabelChange.Text = ((sales.CashPayment + sales.NCashPayment + sales.DiscountTotal) - sales.Totalinv).ToString("N0")
End Sub
Private Sub OnTextChanged(sender As Object, e As EventArgs) Handles txtPayment.TextChanged, txtDiscount.TextChanged
Dim payment As Double = 0
Dim discount As Double = 0
If Not String.IsNullOrEmpty(txtPayment.Text) OrElse Not String.IsNullOrEmpty(txtDiscount.Text) Then
'Error code below this line
payment = Convert.ToDouble(txtPayment.Text)
discount = Convert.ToDouble(txtDiscount.Text)
LabelChange.Text = (Convert.ToDouble(LabelTotalvalue.Text) - discount - payment).ToString("N0")
Else
LabelChange.Text = "-" & Convert.ToDouble(LabelTotalvalue.Text).ToString("N0")
End If
End Sub
Private Sub OnText_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtPayment.KeyPress, txtDiscount.KeyPress
If Not Char.IsControl(e.KeyChar) AndAlso Not Char.IsDigit(e.KeyChar) Then
e.Handled = True
End If
End Sub
Private Sub txtPayment_KeyUp(sender As Object, e As KeyEventArgs) Handles txtPayment.KeyUp
txtPayment.Text = txtPayment.Text.Replace(",", "")
Dim discount As Double = 0
Dim payment As Double = 0
If Not String.IsNullOrEmpty(txtPayment.Text) Then
payment = Convert.ToDouble(txtPayment.Text)
LabelChange.Text = (Convert.ToDouble(LabelTotalvalue.Text) - discount - payment).ToString("N0")
txtPayment.Text = Convert.ToDouble(txtPayment.Text).ToString("N0")
txtPayment.[Select](txtPayment.Text.Length, 0)
End If
End Sub
Private Sub txtDiscount_KeyUp(sender As Object, e As KeyEventArgs) Handles txtDiscount.KeyUp
txtDiscount.Text = txtDiscount.Text.Replace(",", "")
Dim discount As Double = 0
Dim payment As Double = 0
If Not String.IsNullOrEmpty(txtPayment.Text) Then
discount = Convert.ToDouble(txtDiscount.Text)
LabelChange.Text = (Convert.ToDouble(LabelTotalvalue.Text) - discount - Payment).ToString("N0")
txtDiscount.Text = Convert.ToDouble(txtDiscount.Text).ToString("N0")
txtDiscount.[Select](txtDiscount.Text.Length, 0)
End If
End Sub
End Class
方法
Convert.ToDouble(...)
仅在您确定字符串包含数值时才有效。否则,最好使用 Double.TryParse
方法,正如 文档所说,“如果转换失败不会抛出异常”。
以下是如何重写导致错误的行的示例。而不是:
payment = Convert.ToDouble(txtPayment.Text)
写
If Not Double.TryParse(txtPayment.Text, payment) Then
payment = 0 'The string was not a number
End If