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

时间:2015-03-09 19:37:45

标签: vb.net combobox

我试图将多个项目添加到组合框中,但只显示最后一个项目。

示例:

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将会丢失。

为什么?

2 个答案:

答案 0 :(得分:1)

你这太复杂了。 在列表中填充所需的值。 然后将DataSource属性设置为ONCE。在上面的代码中,您将在循环的每次迭代中设置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

答案 1 :(得分:0)

在我看来,每次调用AddItemToComboBoxMod()时都会创建一个新的Dictionary。您可能希望将其实例化并将其绑定到其他位置。添加项方法只应附加键值对。