Vb.net 使用组合框加载不同的图片

Vb.net 使用组合框加载不同的图片,vb.net,vb.net-2010,Vb.net,Vb.net 2010,每次我选择图片不会加载的项目时,combobox2都会出现问题,我希望Combox1中的每个选定项目都会更改Combox2中的项目,Combox2中的每个选定项目都会加载不同的图片 If ComboBox1.SelectedIndex = 0 Then PictureBox1.Image = Nothing ComboBox2.Items.Clear() ComboBox2.Text = "Choose Car"

每次我选择图片不会加载的项目时,combobox2都会出现问题,我希望Combox1中的每个选定项目都会更改Combox2中的项目,Combox2中的每个选定项目都会加载不同的图片

If ComboBox1.SelectedIndex = 0 Then
            PictureBox1.Image = Nothing
            ComboBox2.Items.Clear()
            ComboBox2.Text = "Choose Car"
            ComboBox2.Items.Add("car1")
            ComboBox2.Items.Add("car2")
            ComboBox2.Items.Add("car3")
            If ComboBox2.SelectedItem = "car1" Then
                PictureBox1.Image = My.Resources.BMW

            End If

        ElseIf ComboBox1.SelectedIndex = 1 Then
            PictureBox1.Image = Nothing
            ComboBox2.Items.Clear()
            ComboBox2.Text = "Choose Truck"
            ComboBox2.Items.Add("Truck1")
            ComboBox2.Items.Add("Truck2")
            ComboBox2.Items.Add("Truck3")
            If ComboBox2.SelectedItem = "Truck1" Then
                PictureBox1.Image = My.Resources.Truck
            End If
        ElseIf ComboBox1.SelectedIndex = 2 Then
            PictureBox1.Image = Nothing
            ComboBox2.Items.Clear()
            ComboBox2.Text = "Choose Bike"
            ComboBox2.Items.Add("bike1")
            ComboBox2.Items.Add("bike2")
            ComboBox2.Items.Add("bike3")
            If ComboBox2.SelectedItem = "bike1" Then
                PictureBox1.Image = My.Resources.Bike
            End If
        End If

代码的错误在于,当您在ComboBox1中检查所选项目时,您会向Combox2添加新项目,但同时会立即在ComboBox2中检查所选项目。这意味着,您没有时间在ComboBox2中选择任何内容。这将不可避免地引发异常,因为未选择任何内容

因此,您可以响应ComboBox1 Selection Changed事件,并相应地向ComboBox2添加新项目,然后在单独的事件处理子模块中,根据ComboBox2中的选择将图片加载到pictureBox。此代码将适用于您-

Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
    If ComboBox1.SelectedIndex = 0 Then
        PictureBox1.Image = Nothing
        ComboBox2.Items.Clear()
        ComboBox2.Text = "Choose Car"
        ComboBox2.Items.Add("car1")
        ComboBox2.Items.Add("car2")
        ComboBox2.Items.Add("car3")


    ElseIf ComboBox1.SelectedIndex = 1 Then
        PictureBox1.Image = Nothing
        ComboBox2.Items.Clear()
        ComboBox2.Text = "Choose Truck"
        ComboBox2.Items.Add("Truck1")
        ComboBox2.Items.Add("Truck2")
        ComboBox2.Items.Add("Truck3")

    ElseIf ComboBox1.SelectedIndex = 2 Then
        PictureBox1.Image = Nothing
        ComboBox2.Items.Clear()
        ComboBox2.Text = "Choose Bike"
        ComboBox2.Items.Add("bike1")
        ComboBox2.Items.Add("bike2")
        ComboBox2.Items.Add("bike3")

    End If
End Sub

Private Sub ComboBox2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox2.SelectedIndexChanged
    If ComboBox2.SelectedItem = "car1" Then
        PictureBox1.Image = My.Resources.BMW
    End If
    If ComboBox2.SelectedItem = "Truck1" Then
        PictureBox1.Image = My.Resources.Truck
    End If
    If ComboBox2.SelectedItem = "bike1" Then
        PictureBox1.Image = My.Resources.Bike
    End If
End Sub

无法比较ComboBox2.SelectedItem对象=bike1,字符串。我的意思是你可以比较,但那不是你想要的。相反,您需要比较ComboBox2.SelectedItem.Text=bike1.和顺便说一句,您把刚才提到的代码放在哪里了?在哪个事件下?我这样做了,但我得到了以下错误:System.NullReferenceException未处理HResult=-2147467261 Message=对象变量或未设置块变量。Source=Microsoft.VisualBasicok等等,我发现了你的问题。我把它贴出来作为答案。稍等几分钟。我没有把代码放在任何情况下只是玩:D