如何使用类型填充组合框

时间:2015-07-21 01:29:32

标签: c# types combobox enums

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

的所有类

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

这一切都运行正常,只是为了显示和选择代码库中已存在的事物列表,只需要手动输入枚举两个字典就好了。

我怎样才能更好地做到这一点?

1 个答案:

答案 0 :(得分: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";