首页 > 解决方案 > 在 rad 按钮单击错误时转换单位:System.InvalidCastException

问题描述

我正在尝试在 VB.net 的计算器表单上使用单选按钮来单击从平方厘米转换为平方,反之亦然,但是当我将单选按钮单击事件添加到代码中时,我不断收到此错误:

System.InvalidCastException:“从字符串“”到类型“Double”的转换无效。

点击事件子程序看起来像这样

Private Sub radSquareInch_CheckedChanged(sender As Object, e As EventArgs) Handles radSquareInch.CheckedChanged
    txtAnswer.Text = CDbl(txtAnswer.Text) * 0.155
End Sub

标签: vb.net

解决方案


.Net 有一个很好的方法来检查文本框中的有效条目。它是.TryParse。即使您设置.Text = "0"了,Form.Load您也无法阻止用户在单击单选按钮之前将其删除。

另一个问题是.CheckedChanged用于事件。单选按钮可以从未选中更改为选中,但也可以从选中更改为未选中。假设按钮被选中不会总是得到正确的结果。

Private Sub cmTOin_CheckedChanged(sender As Object, e As EventArgs) Handles cmTOin.CheckedChanged
    Dim input As Double
    If Double.TryParse(TextBox1.Text, input) Then
        If cmTOin.Checked Then
            TextBox2.Text = (input * 0.155).ToString & "sq in"
        ElseIf inTOcm.Checked Then
            TextBox2.Text = (input * 6.452).ToString & "sq cm"
        Else
            MessageBox.Show("Please select a radio button")
        End If
    Else
        MessageBox.Show("Please enter a valid number.")
    End If
End Sub

推荐阅读