如何从对象列表中填充组合框
How to populate combobox from list of objects
晚上好,
通常我的问题应该用这个
来解决
但我不明白我做错了什么。
我在 Visual Studio 2019 年有一个解决方案,有 2 个项目。一个项目用于 GUI 和其他东西,另一个用于后端引擎。
在引擎项目中(命名空间是引擎)我有以下classes:
氏族
namespace Engine
{
public class Clan : CharacterCreationStats
{
public int ID { get; set; }
public string Name { get; set; }
public Clan(int id, string name, int Val1, int Val2,) :base(Val1, Val2)
{
ID = id;
Name = name;
}
}
}
Val1 和 Val2 在 class 中的使用比“Clan”多,因此我创建了一个名为“CharacterCreationStats”的父项class。 Public class 与 public int 的声明是这样的:
namespace Engine
{
public class CharacterCreationStats
{
public int Val1{ get; set; }
}
}
我有一个 class“数据”,其中包含所有通用逻辑
数据
namespace Engine
{
public static class Data
{
public static List<Clan> Clans = new List<Clan>();
public const int CLAN_ID_NAME_A = 1;
public const int CLAN_ID_NAME_B = 2;
static Data()
{
PopulateClans();
}
private static void PopulateClans()
{
Clans.Add(new Clan(CLAN_ID_NAME_A,"NameA", 1, 2));
Clans.Add(new Clan(CLAN_ID_NAME_B, "NameB", 1, 2));
}
}
}
一切正常,列表已满。现在我想绑定一个组合框来使用这些值(向我显示在 Clan-class 中的“Name = name;”中声明的名称)。
为此,我进入了我的第二个项目,我有我的表单(没有 WPF)的 GUI 项目,我这样做:
using Engine;
public partial class CreateClass: Form
{
public CreateClass()
{
InitializeComponent();
}
private void comboBox1_SelectedIndexChanged_1(object sender, EventArgs e)
{
cmbBoxClans.DataSource = Data.Clans;
cmbBoxClans.ValueMember = null;
cmbBoxClans.DisplayMember = "Name";
}
它没有在我的组合框的下拉菜单中显示任何内容。
我做错了什么?
我并不特别需要解决问题的方法,而是提示我没有看到的内容。
将这些代码行放在加载事件中
private void CreateClass_Load(object sender, EventArgs e)
{
cmbBoxClans.DataSource = Data.Clans;
cmbBoxClans.ValueMember = null;
cmbBoxClans.DisplayMember = "Name";
}
晚上好,
通常我的问题应该用这个
但我不明白我做错了什么。
我在 Visual Studio 2019 年有一个解决方案,有 2 个项目。一个项目用于 GUI 和其他东西,另一个用于后端引擎。
在引擎项目中(命名空间是引擎)我有以下classes:
氏族
namespace Engine
{
public class Clan : CharacterCreationStats
{
public int ID { get; set; }
public string Name { get; set; }
public Clan(int id, string name, int Val1, int Val2,) :base(Val1, Val2)
{
ID = id;
Name = name;
}
}
}
Val1 和 Val2 在 class 中的使用比“Clan”多,因此我创建了一个名为“CharacterCreationStats”的父项class。 Public class 与 public int 的声明是这样的:
namespace Engine
{
public class CharacterCreationStats
{
public int Val1{ get; set; }
}
}
我有一个 class“数据”,其中包含所有通用逻辑
数据
namespace Engine
{
public static class Data
{
public static List<Clan> Clans = new List<Clan>();
public const int CLAN_ID_NAME_A = 1;
public const int CLAN_ID_NAME_B = 2;
static Data()
{
PopulateClans();
}
private static void PopulateClans()
{
Clans.Add(new Clan(CLAN_ID_NAME_A,"NameA", 1, 2));
Clans.Add(new Clan(CLAN_ID_NAME_B, "NameB", 1, 2));
}
}
}
一切正常,列表已满。现在我想绑定一个组合框来使用这些值(向我显示在 Clan-class 中的“Name = name;”中声明的名称)。
为此,我进入了我的第二个项目,我有我的表单(没有 WPF)的 GUI 项目,我这样做:
using Engine;
public partial class CreateClass: Form
{
public CreateClass()
{
InitializeComponent();
}
private void comboBox1_SelectedIndexChanged_1(object sender, EventArgs e)
{
cmbBoxClans.DataSource = Data.Clans;
cmbBoxClans.ValueMember = null;
cmbBoxClans.DisplayMember = "Name";
}
它没有在我的组合框的下拉菜单中显示任何内容。
我做错了什么?
我并不特别需要解决问题的方法,而是提示我没有看到的内容。
将这些代码行放在加载事件中
private void CreateClass_Load(object sender, EventArgs e)
{
cmbBoxClans.DataSource = Data.Clans;
cmbBoxClans.ValueMember = null;
cmbBoxClans.DisplayMember = "Name";
}