动态添加项目到Combobox VB.NET

时间:2014-06-26 00:40:29

标签: vb.net combobox

我在windows应用程序中有2个组合框。我想以编程方式根据第一个组合框中选择的内容将项目添加到第二个组合框。

这是我在组合框的选定索引更改中所做的:

Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
    Try
        If ComboBox1.SelectedIndex = 0 Then
            ComboBox2.Items.Add("MM")
            ComboBox2.Items.Add("PP")
        ElseIf ComboBox1.SelectedIndex = 1 Then
            ComboBox2.Items.Add("SMS")
        ElseIf ComboBox1.SelectedIndex = 2 Then
            ComboBox2.Items.Add("MMS")
            ComboBox2.Items.Add("SSSS")
        End If

    Catch ex As Exception

    End Try
End Sub

它工作正常,但是,如果我继续选择不同的项目,它会不断添加值。我想只添加一次这些值。

此外,当我添加项目时,我更愿意添加带有项目描述的ID。我试过了:

ComboBox2.Items.Add("SSSS", "1")

似乎它不起作用。

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

试试这个

Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles ComboBox1.SelectedIndexChanged
    Try
        If ComboBox1.SelectedIndex = 0 Then
            If Not (ComboBox2.Items.Contains("MM")) And Not (ComboBox2.Items.Contains("PP")) Then
                ComboBox2.Items.Add("MM")
                ComboBox2.Items.Add("PP")
            End If
        ElseIf ComboBox1.SelectedIndex = 1 Then
            If Not (ComboBox2.Items.Contains("SMS")) Then
                ComboBox2.Items.Add("SMS")
            End If
        ElseIf ComboBox1.SelectedIndex = 2 Then
            If Not (ComboBox2.Items.Contains("MMS")) And Not (ComboBox2.Items.Contains("SSSS")) Then
                ComboBox2.Items.Add("MMS")
                ComboBox2.Items.Add("SSSS")
            End If
        End If

    Catch ex As Exception

    End Try

答案 1 :(得分:0)

关于:

  

"此外,当我添加项目时,我更愿意为该项目添加ID   描述"

您可以使用ComboBox的AddRange功能或制作我在此处显示的列表并将其用作数据源 - 如@Plutonix在其评论中所述。

使用它,您可以添加一个包含值和描述的类型的对象数组,前提是您覆盖ToString基函数(Object类)。

这是一个类:

Public Class CodeAndDescription
    Public code As String
    Public description As String

    Public Overrides Function ToString() As String
        Return Me.code + " - " + description
    End Function
End Class

现在列出该上层类并将其添加到组合框中。类似的东西:

Dim lstItems As List(Of CodeAndDescription) = GetList()
yourComboBox.Items.Clear()
yourComboBox.Items.AddRange(lstItems.ToArray) 

当你把它从组合中取出时,不要忘记将检索到的对象强制转换:

Dim codeDesc As CodeAndDescription = TryCast(yourComboBox.Items(0), CodeAndDescription)

我已在检查清单上完成此操作,但我认为ComboBox的原理相同。