在ComboBox中显示列表内容特定字段(C#)

时间:2009-08-30 17:19:44

标签: c# user-interface list combobox

嗯,我的问题有点傻,但我尝试了许多不同的事情而没有结果。

我的主窗体中有一个ComboBox,我想将其数据源指向Filters类中声明的公共只读List PriceChanges列表。没问题,但我想列出Description字段。

我尝试将“Description”字符串分配给DisplayMember属性但没有成功。我的ComboBox仅为每个条目列出:“BusinessLogic.PriceChange”,其中BusinessLogic是我的命名空间的名称,而PriceChange是该类。

我感谢任何帮助。

此致

这是我主要表格代码的一部分

    public mainFrm()
    {
        InitializeComponent();

        prodFilter = new Filters();
        cbPriceChanges.DataSource = prodFilter.PriceChanges;
        cbPriceChanges.DisplayMember = "Description"
    }

这是声明List对象

的代码的一部分
public enum PriceChangeTypes
{
    No_Change,
    Increased,
    Decreased,
    All
}

public class PriceChange
{
    public String Description;
    public readonly PriceChangeTypes Type;

    public delegate bool ComparisonFuntionDelegate(Decimal a);
    public readonly ComparisonFuntionDelegate ComparisonFunction;

    public PriceChange(String Description, PriceChangeTypes type , ComparisonFuntionDelegate CompFunc)
    {
        this.Description = Description;
        Type = type;
        ComparisonFunction = CompFunc;
    }
}

public class Filters
{

    public readonly List<PriceChange> PriceChanges = null;

    public Filters()
    {
        PriceChanges = new List<PriceChange>();

        PriceChanges.Add(new PriceChange("No Change", PriceChangeTypes.No_Change, PriceChange => PriceChange == 0));
        PriceChanges.Add(new PriceChange("Increased", PriceChangeTypes.Increased, PriceChange => PriceChange > 0));
        PriceChanges.Add(new PriceChange("Decreased", PriceChangeTypes.Decreased, PriceChange => PriceChange < 0));
        PriceChanges.Add(new PriceChange("All", PriceChangeTypes.All, a => true));
    }
}

2 个答案:

答案 0 :(得分:1)

您是否尝试过将“描述”设为属性?如果列表试图通过反射获取字段,它会发生很大的变化(最有可能)。

public class PriceChange {
    public string Description{
        get;
        set;
    }
    // ...
}

答案 1 :(得分:0)

尝试将此添加到您的班级:

public override string ToString()
        {
            return Description;
        }

目前您只是获取ToString的默认值,即对象命名空间和类