You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# ListBox设置DisplayMember显示双属性失败,显示Id问题求助

问题分析与解决方案

你遇到的问题核心很明确——你给DisplayMember指定了一个不存在的属性名LastNameFirstName,数据绑定系统找不到这个属性,就会回退显示对象的默认字符串表示(你看到显示Id,本质是绑定失败后的 fallback 逻辑导致的)。

方法一:新增计算属性(推荐,贴合数据绑定设计)

在Customer类中添加一个只读属性,返回你需要的格式:

public class Customer {
    // 原有代码...

    #region Properties
    // 原有属性...
    public string LastNameFirstName
    {
        get { return $"{LastName} {FirstName}"; }
    }
    #endregion
}

这样你原来的绑定代码无需修改,lbxCustomers.DisplayMember = "LastNameFirstName";就能正常识别并显示"SMITH Robert"格式的内容。

方法二:重写ToString()方法

如果不想新增属性,也可以直接重写Customer类的ToString()方法,ListBox在找不到DisplayMember时会自动调用这个方法:

public class Customer {
    // 原有代码...

    public override string ToString()
    {
        return $"{LastName} {FirstName}";
    }
}

此时你可以保留或移除DisplayMember的设置,都能正常显示目标格式。

补充说明

你的Customer类同时包含老式的GetXXX/SetXXX方法和C#属性,建议统一使用属性写法,更符合现代C#的编码规范。

内容的提问来源于stack exchange,提问作者nboulfroy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:07:07