在ComboBox中显示对象属性

Cra*_*aig 1 c# winforms

我有一个自定义对象,其中包含有关项目资源的详细信息.属性为PersonName,Position和Id如果未填充资源,PersonName将设置为"Unassgined".

要将对象添加到Combobox,我会:

    var avail = s.GetUnassignedPrintRoles(SprintId);
    foreach (var o in avail)
    {
        cmbRoles.Items.Add(o);
    }
Run Code Online (Sandbox Code Playgroud)

显示资源列表时这很好.我的对象有一个重写的ToString()方法:

public override string ToString()
        {
            if(AssignedPerson != null)
                return ResourceType + " - " + AssignedPerson.Firstname + " " + AssignedPerson.Surname;
            return "Unassigned";
        }
Run Code Online (Sandbox Code Playgroud)

但是,我有一个屏幕,显示未分配的角色列表.所以,我得到一个列表,其中Person为NULL.

但是,我想在ComboxBox中显示"角色".

但是,我的对象的ToString显示'未分配'.如何让它显示Role属性?有没有办法在Comboxbox项目中保存对象,但在显示中显示不同的属性,而不是我在ToString覆盖中设置的内容?

Sha*_*e.C 5

至于我的评论,它可能需要来设置DisplayMemberValueMember组合框的特性,像这样;

cmbRoles.DisplayMember = "Role";
cmbRoles.ValueMember = "Id";
cmbRoles.DataSource = avail;
Run Code Online (Sandbox Code Playgroud)

这样你的ComboBox将显示角色,但底层数据将是ID,所以当你通过SelectedValue属性选择时,你将获得ID.