如何从对象列表中填充组合框

Posted

技术标签:

【中文标题】如何从对象列表中填充组合框【英文标题】:How to populate combobox from list of objects 【发布时间】:2021-06-18 15:24:30 【问题描述】:

晚上好,

通常我的问题应该用这个C# Using a list of objects to populate combobox and keeping object properties accessible来解决

但我不明白我在这里做错了什么。

我在 Visual Studio 2019 中有一个包含 2 个项目的解决方案。一个项目用于 GUI 和其他东西,另一个用于后端引擎。

在引擎项目(命名空间是引擎)中,我有以下类:

氏族

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 用于比“Clan”更多的类,因此我创建了一个名为“CharacterCreationStats”的父类。具有 int 的公共声明的公共类是这样的:

namespace Engine

  public class CharacterCreationStats
  
    public int Val1 get; set; 
  

我有一个包含所有通用逻辑的“数据”类

数据

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";


它没有在我的组合框的下拉菜单中显示任何内容。

我做错了什么?

我并不特别需要我的问题的解决方案,而是提示我看不到的东西。

【问题讨论】:

【参考方案1】:

将这几行代码放在加载事件中

        private void CreateClass_Load(object sender, EventArgs e)
        
            cmbBoxClans.DataSource = Data.Clans;
            cmbBoxClans.ValueMember = null;
            cmbBoxClans.DisplayMember = "Name";

        

【讨论】:

嗯....猜猜这对我来说是“回到教程”....感谢您的帮助。成功了 祝你好运,正好忘记这种事

以上是关于如何从对象列表中填充组合框的主要内容,如果未能解决你的问题,请参考以下文章

如何在vfp中的选定组合框中填充列表框?

使用远程对象从数据库中填充组合框

如何从同一表单中的另一个组合框填充组合框?

如何根据从另一个组合框进行的选择来填充组合框

如何在访问中使用 VB 从选择查询中填充组合框?

如何从数据库查询中填充组合框?