【问题标题】:Populate multiple comboboxes with the same values使用相同的值填充多个组合框
【发布时间】:2012-11-27 15:16:12
【问题描述】:

我的表单上有 8 个组合框,它们都包含相同的值 - 是和否。

有没有比combox1.items.add("Yes") 等更快的方法?

我有以下内容,但似乎找不到与添加项目有关的任何内容。

    Dim cmb As Control
    For Each cmb In Panel1.Controls
        If TypeOf cmb Is ComboBox Then
'cmb. isnt beinging anything up for adding items?
        End If
Next

干杯

【问题讨论】:

  • cmb 在这种情况下仍然是 Control;你需要DirectCast(cmb, ComboBox).Items.Add。但是请改用@TimSchmelter 的解决方案,并确保在这种情况下不要提前声明cmb :)

标签: vb.net combobox


【解决方案1】:

你可以使用Enumerable.OfType:

For Each cmb In Panel1.Controls.OfType(Of ComboBox)()
    cmb.Items.Add("Yes")
Next

【讨论】:

    【解决方案2】:

    我会创建一个包含{Yes,No} 值的DataSource,例如List,然后这样做:

    For Each cmb In Panel1.Controls.OfType(Of ComboBox)()
      cmb.DataSource = myYesNoDataSource
    Next
    

    稍后如果您需要接受YN 来代替YesNo,您可以转换为Dictionary 并相应地设置ValueMemberDisplayMember。另外,您的可用值列表仅初始化一次。因此,您的解决方案变得灵活。

    【讨论】:

      【解决方案3】:

      如果您不使用面板,此代码将很有用。 如果您有 5 个组合框,请给出 1 到 5 的计数以及这些组合框的名称,例如 ComboBox1、ComboBox2、ComboBox3 等。

      For count = 1 To 5
      Dim combobox = DirectCast(Me.Controls("ComboBox" & n & ""), ComboBox)
      combobox.Items.Add("Ok")
      Next
      

      希望这段代码也能帮助到你。

      【讨论】:

        猜你喜欢
        • 2013-08-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-04
        • 2021-03-09
        • 1970-01-01
        • 2020-03-14
        • 1970-01-01
        相关资源
        最近更新 更多