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

Vb.net 从字符串“Large”到类型“Double”的转换无效,vb.net,Vb.net,因此,我试图让我的代码工作,这意味着显示一个价格取决于大小和金额,但当我试图运行代码并获得价格时,我得到了错误 从大字符串到类型“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 En

因此,我试图让我的代码工作,这意味着显示一个价格取决于大小和金额,但当我试图运行代码并获得价格时,我得到了错误

从大字符串到类型“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

End Class

听起来像这样的错误消息:

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

发生在此行按钮2\u单击子按钮:

两个选定项似乎都是字符串值,其中一个等于大。也许您应该修复检索分配给大项目的整数值的方式


VB.NET隐式地将字符串转换为整数-仅当未启用选项Strict(康拉德·鲁道夫(Konrad Rudolph)所指出的强烈反对使用该选项时-但它在此处失败,因为该值不表示整数。

我建议您对数量输入使用NumericUpDown。可以设置最小值和最大值

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
在这里,我们添加了一个表单级别变量来保存选定的大小

最后完成了算法的实现并显示了结果。当对十进制总数调用.toString时,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

哪一行给了errorTurn选项严格的。。。我想可能是这一行total=sizembobox.SelectedItem*AmountComboBox.SelectedItem,您能告诉我们这两个组合框是如何填充的吗?我打赌您尝试将字符串相乘,但这不会起作用…错误消息实际上是不言自明的…“VB.NET隐式地将字符串转换为整数”-只有在未启用选项Strict的情况下,这是非常不鼓励的,我不知道Microsoft为什么拒绝更改这个愚蠢的默认值。@KonradRudolph,我添加了您的评论和属性。
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