2

我有一个列表框,我想用我创建的联系人对象填充它。用户填写一个带有几个文本字段的小表单,当用户按下确定按钮时,将创建联系人对象。

现在的问题是我想将contactpersoon 对象的名称属性作为一个项目添加到列表框中。但是当我想从列表框中删除它时,我想通过对象的 id 属性而不是 name 属性来删除它...

谁能帮我这个。我尝试使用字典,但我没有让它们正常工作。

任何人都可以请建议/帮助我吗?

非常感谢你..

顺便说一句,我很抱歉我的英语不好:p

4

3 回答 3

3

在绑定到 ListBox 时,使用这个 -

listbox.DisplayMember = "name";
listbox.ValueMember = "id";

您可以像这样将 ID 存储为隐藏值。

于 2012-06-05T20:39:15.757 回答
2

您需要覆盖 ContactPerson 类中的 ToString 方法。例如:

public class ContactPerson
{
    public string Name;
    public string Id;

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

然后,您可以将实际的 ContactPerson 对象添加到列表框中。例如:

listbox.Items.Add(contactPerson);

然后,当您删除时,您可以遍历列表中的每个项目并读取 ContactPerson 对象的任何属性,例如:

foreach(object item in listbox.Items)
{
    if((ContactPerson)item.Id == ...)
    {
        // do work
    }
}
于 2012-06-05T20:38:17.587 回答
1

尝试覆盖ToString()ContactPerson 类的函数并将整个对象添加到 ListBox,而不仅仅是名称。是对象的ListBox.Items集合,而不仅仅是字符串。ListBox 控件使用ToString()来显示对象的文本值。

或者,您可以创建一个List<contactperson>并将其用作数据源,然后只需设置 ListBox 的DisplayMemberValueMember字段。 DisplayMember将是可见名称,ValueMember将是 ID 字段。

于 2012-06-05T20:39:10.353 回答