从字符串“Large”到“Double”类型的转换无效

问题描述 投票:-3回答:2

所以我试图让我的代码工作,这意味着显示价格取决于大小和数量但是当我尝试运行代码并获得价格时,我得到错误

从字符串“Large”到“Double”类型的转换无效。

当我点击我的价格按钮。

Dim large As Integer
Dim total As Integer

Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
End Sub

Private Sub PreviewButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PreviewButton.Click
    PictureBox1.Image = System.Drawing.Image.FromFile _
      ("H:\My Pictures\" + ColourComboBox.SelectedItem + "Tshirt.PNG")

    PictureBox1.ClientSize = New Size(200, 200)
    PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage

    str = "The colour chosen is " & ColourComboBox.SelectedItem _
        & vbCrLf & " and the size chosen is " & SizeComboBox.SelectedItem

End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

End Sub

Private Sub SizeComboBox_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SizeComboBox.SelectedIndexChanged
    small = 10
    medium = 12
    large = 15

End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnbuy.Click
    total = SizeComboBox.SelectedItem * AmountComboBox.SelectedItem
    MessageBox.Show(total)
End Sub

结束班

vb.net
2个回答
0
投票

听起来像这个错误消息:

从字符串“Large”到“Double”类型的转换无效。

发生在这一行(Button2_Click() sub):

total = SizeComboBox.SelectedItem * AmountComboBox.SelectedItem

两个选定的项似乎都是String值,其中一个等于"Large"。也许您应该修复检索分配给“大”项的整数值的方式。

VB.NET隐含地将字符串转换为整数 - 只有在没有启用Option Strict的情况下才强烈劝阻(正如Konrad Rudolph所指出的那样) - 但它在这里失败了,因为该值不代表整数。


0
投票

我建议您使用NumericUpDown作为Amount(数量)输入。您可以设置最小值和最大值。

Private Sub SizeComboBox_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SizeComboBox.SelectedIndexChanged
    small = 10
    medium = 12
    large = 15
End Sub

除了表单级变量的值之外,上面的代码实际上什么都不做。组合框中的文本与这些变量无关。

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    ComboBox1.Items.Add("small")
    ComboBox1.Items.Add("medium")
    ComboBox1.Items.Add("large")
End Sub

我将这些项目添加到Form.Load中的组合框中,但这可以在设计时完成。

Private ProductSize As Decimal = 0

Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
    Select Case ComboBox1.SelectedItem.ToString
        Case "small"
            ProductSize = 10
        Case "medium"
            ProductSize = 12
        Case "large"
            ProductSize = 15
        Case Else
            MessageBox.Show("Please make a size selection.")
    End Select
End Sub

这里我们添加了一个表单级变量来保存所选的大小。

最后完成算法并显示结果。当在Decimal Total上调用.ToString(“C”)时,C告诉它将结果显示为货币。

Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
    Dim Total = ProductSize * NumericUpDown1.Value
    MessageBox.Show(Total.ToString("C"))
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.