【问题标题】:listbox items not displaying properly列表框项目未正确显示
【发布时间】:2014-07-07 20:30:42
【问题描述】:

我有一个列表框和一个 ListItem 对象,我将它们添加到列表框中,以便我可以从所选项目中检索与显示的成员不同的值。

class ListItem
{
    public string DisplayMember;
    public string ValueMember;
    public ListItem(string n,string v){
         DisplayMember = n;
         ValueMember = v;
    }
}


public CompareTimeFramesForm()
{
    InitializeComponent();           
    listBox1.Items.Add(new ListItem("# of Bookings", null));
    listBox1.Items.Add(new ListItem("People", "guaranteed_count"));
}

这是一个 winform 仅供参考。 我遇到的问题是实际列表框中显示的项目具有对象,而不是我希望在 ListItem 构造函数的第一个参数中显示的字符串。 它看起来像 Bookings.Helpers.ListItem 而不是“预订数量”

在设计器中,我将 displayMember 属性更改为 DisplayMember,但它不起作用。

【问题讨论】:

  • 附注:请避免在标题中添加标签。此外,“Visual Studio”似乎不适用于您的问题(标题或标签),因为您似乎没有构建任何类型的 VS 插件。

标签: c# winforms


【解决方案1】:

来自 MSDN:

将对象添加到 ListBox 时,控件使用对象的 ToString 方法中定义的文本,除非在 DisplayMember 属性中指定对象内的成员名称。

ListBox 将调用ToString() 将项目转换为字符串。在您的情况下,您只需要像这样更改您的 ListItem 类:

class ListItem
{
    public string DisplayMember;
    public string ValueMember;

    public ListItem(string n,string v) {
         DisplayMember = n;
         ValueMember = v;
    }

    public override string ToString() {
        return DisplayMember;
    }
}

作为替代方案,您可以设置 DisplayMember 属性(在设计器中或使用代码)以使用您的属性(您将该属性称为 DisplayMember 但它的名称是免费的,因为它必须指定并且它不使用任何约定):

listBox1.DisplayMember = "DisplayMember";

【讨论】:

    【解决方案2】:

    试试这个,它应该适合你!

    class ListItem
    {
    public string DisplayMember;
    public string ValueMember;
     public ListItem(string n,string v){
         DisplayMember = n;
         ValueMember = v;
     }
    

    }

    public CompareTimeFramesForm()
    {
        InitializeComponent();           
        listBox1.Items.Add(new ListItem("# of Bookings", null).DisplayMember);
        listBox1.Items.Add(new ListItem("People", "guaranteed_count").DisplayMember);
    }
    

    【讨论】:

    • 这只会使字符串值可选择而不是 ListItem 对象。
    猜你喜欢
    • 1970-01-01
    • 2018-11-05
    • 1970-01-01
    • 2021-12-08
    • 2016-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    相关资源
    最近更新 更多