Winforms 为什么组合框显示对象?

Winforms 为什么组合框显示对象?,winforms,Winforms,我有一个组合框,我想填充一些信息。代码如下: cmbSelectProject.Items.Clear(); cmbSelectProject.ValueMember = "Sid"; cmbSelectProject.DisplayMember = "Name"; cmbSelectProject.DataSource = new BindingSource(ApiCaller.LstPro

我有一个组合框,我想填充一些信息。代码如下:

        cmbSelectProject.Items.Clear();
        cmbSelectProject.ValueMember = "Sid";
        cmbSelectProject.DisplayMember = "Name";
        cmbSelectProject.DataSource = new BindingSource(ApiCaller.LstProjects, null);
所以,有一个具有现有属性“Sid”和“Name”的类项目。LstProjects调用返回项目列表。因此,我希望“Name”不显示,“Sid”用作值。。相反,我在下拉列表中看到了一堆项目对象

我在这里做错了什么?谢谢你的建议。

试试这个序列

  • 设置数据源属性
  • 设置ValueMamber和DisplayMember
  • 刷新组合。使用Refresh()方法

  • 尝试类似的方法:
    var projects=newbindingslist(ApiCaller.LstProjects);cmbSelectProject.DataSource=新绑定源(项目,空)。否则,发布项目类的原型和
    ApiCaller.LstProjects
    返回的实际类型。(您应该绑定到具体类型或类型定义,例如,
    typeof(List)
    ,如果此时集合为空或未定义)顺便说一句,为什么
    cmbSelectProject.Items.Clear()?您以前有其他设置为数据源吗?Jimi,谢谢您的帮助。。将检查您当前的分配顺序是否正确:首先是
    DisplayMember
    ,然后是
    ValueMember
    ,然后是
    DataSource
    。如果在设置数据源时出现了某种问题,那么当时是由数据源本身或其内容引起的。这就是为什么我问您是否在控件中设置了另一个数据源。在分配另一个之前,请尝试将其设置为
    null
    。运行此代码时,
    ApiCaller.LstProjects
    的实际内容也很重要;在何处运行此代码也很重要。