【问题标题】:Load values of enum type into a combobox将枚举类型的值加载到组合框中
【发布时间】:2013-01-19 21:44:52
【问题描述】:

给定以下枚举:

Enum enumExample
  world
  oblivion
  holiday
End Enum

我可以将它的值添加到 ComboBox 项目列表中,如下所示:

combo.Items.Add(enumExample.holiday)
combo.Items.Add(enumExample.oblivion)
combo.Items.Add(enumExample.world)

有没有更短的方法?

【问题讨论】:

    标签: vb.net combobox enums


    【解决方案1】:

    您可以使用Enum.GetValues 获取枚举值的列表,然后迭代结果:

    For Each i In  [Enum].GetValues(GetType(EnumExample))
      combo.Items.Add(i)
    Next
    

    或者,正如@Styxxy 所说:

    combo.Items.AddRange([Enum].GetValues(GetType(EnumExample)))
    

    【讨论】:

    • 甚至更短,使用AddRange方法添加数组(不需要自己循环)。
    • 'AddRange' 顺便说一句要快得多。
    • 你也可以使用.GetNamesComboBox1.Items.AddRange([Enum].GetNames(GetType(enumExample)))
    • 我真的希望人们停止提供依赖隐式转换的答案。如果 Option Strict 被打开,它应该被打开,这将不会编译。正如 Intellisense 所建议的,强制转换为对象数组会导致运行时错误。
    【解决方案2】:

    为什么不直接使用:

    Enum enumExample
      world
      oblivion
      holiday
    End Enum
    
    ComboBox1.DataSource = [Enum].GetValues(GetType(enumExample))
    

    这是我用过的,它似乎奏效了。

    【讨论】:

    • 数据绑定 ftw... ++
    猜你喜欢
    • 1970-01-01
    • 2013-02-09
    • 1970-01-01
    • 2020-07-26
    • 1970-01-01
    • 2018-02-14
    • 2012-08-19
    • 1970-01-01
    • 2019-04-09
    相关资源
    最近更新 更多