我正在使用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属性。但是,当我这样做时,同样的事情发生了。该项目的名称并未如期望。
答案 0 :(得分:0)
在winforms控件中,有一个Tag
属性,您可以将其设置为您想要的任何内容,然后再检索。请尝试使用它。
答案 1 :(得分:0)
您的SomeData
班级没有名为Item Name
的成员。它有两个成员:Value
和Text
。因此,根据the docs,您会得到调用ToString
的结果:
如果对象上不存在指定的属性,或者DisplayMember的值为空字符串(“”),则会显示对象的ToString方法的结果。
将其更改为Value
或Text
或添加其他属性以保存您要显示的值。