使用C#,如何在列表框项上创建不可见属性并访问它?

时间:2016-05-15 05:44:40

标签: c# windows forms listbox

我正在使用C#Windows窗体,我创建了一个列表框,我想在此列表框中的每个单独项目中创建一个不可见的值。所以要做到这一点,我选择使用显示成员。只有一个问题。我创建的项目的名称在listBox中对用户可见,而不是代码中的DisplayMember,即“项目名称”。相反,我创建的项目的名称显示为“Doc_Engine.PersonalMessageSystemForm + SomeData”。

这是我的第一个代码:

//Create an item in the listBox1.
List<SomeData> data = new List<SomeData>();
data.Add(new SomeData() { Value = 1, Text = "Hidden Text" });
listBox1.DataSource = data;
listBox1.DisplayMember = "Item Name";

这是我的第二个代码:

//A class that contains two required strings.
public class SomeData
        {
            public int Value { get; set; }
            public string Text { get; set; }
        }

Click here to see a picture of my ListBox

我希望列表框中我的项目名称为“项目名称”。不是“Doc_Engine.PersonalMessageSystemForm + SomeData”。

更新:我可能会使用Tag属性。但是,当我这样做时,同样的事情发生了。该项目的名称并未如期望。

2 个答案:

答案 0 :(得分:0)

在winforms控件中,有一个Tag属性,您可以将其设置为您想要的任何内容,然后再检索。请尝试使用它。

答案 1 :(得分:0)

您的SomeData班级没有名为Item Name的成员。它有两个成员:ValueText。因此,根据the docs,您会得到调用ToString的结果:

  

如果对象上不存在指定的属性,或者DisplayMember的值为空字符串(“”),则会显示对象的ToString方法的结果。

将其更改为ValueText或添加其他属性以保存您要显示的值。