将多个项目添加到组合框只会添加最后一个项目

Adding multiple items to combo box only adds LAST ITEM

我正在尝试向组合框中添加多个项目,但只显示最后一个项目。

示例:

Dim i as Integer
   For i = 0 to 3
   AddItemToComboBox(i, i)
Next

Sub AddItemToComboBoxMod(ByVal itmValue, ByVal itmData)
        Dim comboSource As New Dictionary(Of String, String)()
        comboSource.Add(itmValue, itmData)
        cbComboBox.DataSource = New BindingSource(comboSource, Nothing)
        cbComboBox.DisplayMember = "Value"
        cbComboBox.ValueMember = "Key"
        Dim key As String = DirectCast(cbComboBox.SelectedItem, KeyValuePair(Of String, String)).Key
        Dim value As String = DirectCast(cbComboBox.SelectedItem, KeyValuePair(Of String, String)).Value
    End Sub

但最后,只有最后一项“3”会出现。 0,1,2 将丢失。

为什么?

在我看来,您每次调用 AddItemToComboBoxMod() 时都在创建一个新词典。您可能想要实例化它并将其绑定到其他地方。添加项方法应该只附加键值对。

你把事情搞得太复杂了。 在列表中填充所需的值。 然后设置数据源 属性 一次。在上面的代码中,您在循环的每次迭代中设置 DataSource 属性。

下面是我用来演示概念的示例事件处理程序。

Private Sub cmdPopulate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdPopulate.Click
        Dim i As Integer
        Dim comboSource As New Dictionary(Of String, String)()

        For i = 0 To 3
            comboSource.Add(i, i)
        Next



        cbComboBox.DataSource = New BindingSource(comboSource, Nothing)
        cbComboBox.DisplayMember = "Value"
        cbComboBox.ValueMember = "Key"

    End Sub