Member 13007431 Ответов: 1

Как я могу добавить элементы во второй combobox на основе выбранного значения первого combobox?


Я динамически добавил названия продуктов в combobox1 и хочу динамически добавлять версии, относящиеся к этому продукту в combobox2, когда пользователь выбирает один продукт, соответствующий этому продукту, версии которого должны отображаться. как я могу это реализовать??

Что я уже пробовал:

Public Sub add_Control()
        Dim dict As Dictionary(Of String, List(Of String)) = New Dictionary(Of String, List(Of String))
        Dim dic As Dictionary(Of String, List(Of String))
        For Each pList As product In productArrayList  //productArraylist contains my product names and version
            Dim l As List(Of String) = New List(Of String)
            Form1.ComboBox1.Items.Add(pList.ProductName)
           
            ' Form1.ComboBox2.Items.Add(pList.ProductVersion)
            For i = 0 To Form1.ComboBox1.Items.Count - 2 Step 1
                For j = Form1.ComboBox1.Items.Count - 1 To i + 1 Step -1
                    If Form1.ComboBox1.Items(i).ToString = Form1.ComboBox1.Items(j).ToString Then
                        Form1.ComboBox1.Items.RemoveAt(j)
                        dict.
                        dic = dict.GetDictionary("MyDictionary", True)
                        'Add some values 
                        dic.LongSetAt(2, "two")    //this method is nt working
                        dic.LongSetAt(15, "fifteen")
                        dic.LongSetAt(300, "three hundred")

                        'Form1.ComboBox2.Items.Add(pList.ProductVersion)
                    Else
                        '    Form1.ComboBox1.Items.Add(pList.ProductName)
                        l.Add(pList.ProductVersion)
                        dict.Add(pList.ProductName, l)
                    End If
                Next
            Next
            ' Form1.ComboBox2.Items.Add(pList.ProductVersion)
                   Next
    End Sub

1 Ответов

Рейтинг:
5

Graeme_Grant

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    For i As Integer = 1 To 10

        Dim versions As List(Of String) = New List(Of String)()
        Dim key As String = "Item " + CStr(i)
        For j As Integer = 1 To 5
            versions.Add(CStr(i) + ".0" + CStr(j))
        Next
        dic.Add(key, versions)
        ComboBox1.Items.Add(key)
    Next
End Sub

Dim dic As Dictionary(Of String, List(Of String)) = New Dictionary(Of String, List(Of String))()

Private Sub ComboBox1_SelectedValueChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedValueChanged
    Dim versions As List(Of String) = dic(ComboBox1.SelectedItem)
    ComboBox2.SelectedIndex = -1
    ComboBox2.Items.Clear()
    For i As Integer = 0 To versions.Count - 1
        ComboBox2.Items.Add(versions(i))
    Next
End Sub