使用组合框加载不同的图片
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
每次我选择图片无法加载的项目时,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