在主组合框更改事件上重新加载辅助组合框数组
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
这是我的代码,用于将组合框数组添加到组框数组,然后当组合框中的项目被 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