在主组合框更改事件上重新加载辅助组合框数组

Reload secondary combobox array on primary combobox change event

这是我的代码,用于将组合框数组添加到组框数组,然后当组合框中的项目被 selected 时,它会显示辅助组合框

Dim gbQuoteProduct(5) As GroupBox
Dim cmboBoxQuoteProduct(5) As ComboBox
gbQuoteProduct(n) = New GroupBox

Private Sub frmCreateQuote_Load(sender As Object, e As EventArgs) Handles MyBase.Load
With gbQuoteProduct(n)
    .Text = ""
    .Location = New Point(10, 5 + n * 70)
    .Width = 300
    .Height = 70
End With
pnlQuoteProducts.Controls.Add(gbQuoteProduct(n))

cmboBoxQuoteProduct(n) = New ComboBox
With cmboBoxQuoteProduct(n)
    .Items.Add("A")
    .Items.Add("B")
    .Items.Add("C")
    .Items.Add("D")
    .Text = ""
    .Location = New Point(60, 15)
End With
gbQuoteProduct(n).Controls.Add(cmboBoxQuoteProduct(n))
AddHandler cmboBoxQuoteProduct(n).SelectedIndexChanged, AddressOf subProducts
End Sub

其中 "subproducts" 只是生成一个辅助组合框。

但是如果我 select 第一个组合框的错误选项然后尝试更改我的 selection,第二个组合框不会刷新新的组合框。换句话说,第二个组合框的选项不会更改以反映第一个组合框的更改。

我这样做并成功了。代码在图片下方

Public Class frmQuestion28955485
    Dim gbQuoteProduct(5) As GroupBox
    Dim cmboBoxQuoteProduct(5) As ComboBox

    Dim cmboBoxSubProducts(5) As ComboBox
    Dim n As Integer

    Private Sub frmCreateQuote_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
        n = 1
        gbQuoteProduct(n) = New GroupBox
        With gbQuoteProduct(n)
            .Text = ""
            .Location = New Point(10, 5 + n * 70)
            .Width = 300
            .Height = 70
        End With
        pnlQuoteProducts.Controls.Add(gbQuoteProduct(n))

        cmboBoxQuoteProduct(n) = New ComboBox
        With cmboBoxQuoteProduct(n)
            .Items.Add("A")
            .Items.Add("B")
            .Items.Add("C")
            .Items.Add("D")
            .Text = ""
            .Location = New Point(60, 15)
        End With
        gbQuoteProduct(n).Controls.Add(cmboBoxQuoteProduct(n))
        AddHandler cmboBoxQuoteProduct(n).SelectedIndexChanged, AddressOf subProducts
    End Sub
    Private Sub subProducts(ByVal sender As Object, ByVal e As System.EventArgs)
        Try
            gbQuoteProduct(n).Controls.Remove(cmboBoxSubProducts(n))
        Catch

        End Try

        cmboBoxSubProducts(n) = New ComboBox
        With cmboBoxSubProducts(n)
            .Items.Clear()
            .Items.Add("You picked " + cmboBoxQuoteProduct(n).Text)
            .Text = "You picked " + cmboBoxQuoteProduct(n).Text
            .Location = New Point(60, 40)
        End With
        gbQuoteProduct(n).Controls.Add(cmboBoxSubProducts(n))
    End Sub
End Class