【问题标题】:How to fill a combo box with Types如何用类型填充组合框
【发布时间】:2015-07-21 01:29:31
【问题描述】:

我正在为我的游戏创建一个编辑器,作为 C# 中的 Windows 窗体项目。 在很多情况下,我想用所有可能的父类派生类型填充组合框。例如,您正在添加一个项目,因此您从列表中选择“武器、盔甲、弹药、消耗品、货币等”。 (这些都是从“item”派生的类)

目前,我为列表中的每个类型手动定义了一个包含一个成员的枚举,然后使用该枚举来填写组合框中的选项。然后我需要两个字典:一个从枚举到类型,一个从类型到枚举。通过这种方式,我可以在选择项时刷新组合框以显示项的类型,并且当组合框接受用户输入时,我可以将项替换为新实例化的项。

这一切都很好,手动输入一个枚举和两个字典似乎是糟糕的代码,只是为了显示和选择代码库中已经存在的东西的列表。

我怎样才能做得更好?

【问题讨论】:

  • 这似乎是一个完美的反思环境。

标签: c# types combobox enums


【解决方案1】:

您可以使用反射来获取基类型为Item 的所有类类型,并使用该数据填充ComboBox;然后告诉它要向用户显示Type 的哪个属性(可能是Name)。

foreach (var item in Assembly.GetExecutingAssembly().GetTypes()
                             .Where(x => x.BaseType == typeof(Item)))
{
    comboBox1.Items.Add(item);
}

comboBox1.DisplayMember = "Name";

【讨论】:

    猜你喜欢
    • 2015-06-16
    • 1970-01-01
    • 2019-08-04
    • 1970-01-01
    • 2013-06-22
    • 2011-11-20
    • 2011-12-12
    • 2014-12-03
    • 1970-01-01
    相关资源
    最近更新 更多