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

Load different pictures with combobox

每次我选择图片无法加载的项目时,combobox2 都会出现问题,我希望 combobox1 中的每个选定项目都更改 combobox2 中的项目,并且 combobox2 中的每个选定项目都加载不同的图片.

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 中的 selected 项目时,您将新项目添加到 ComboBox2,但同时您立即检查 selected 项目组合框 2。这意味着,您没有时间 select ComboBox2 中的任何内容。这将不可避免地引发异常,因为没有 selected.

所以你可以做的是响应ComboBox1 Selection Changed Events并相应地向ComboBox2添加新项目,然后在一个单独的事件处理子中,根据ComboBox2中的selection将图片加载到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