C# ListBox 在与 ListViewItem 一起使用时显示错误的格式

C# ListBox displays wrong format when used with ListViewItem

这是我的代码,用于使用 ListViewItem 对象和项目 .Text.Tag 填充名为 delBooksListBox属性。

ListViewItem item = new ListViewItem();
item.Text = "ss"; // Or whatever display text you need
item.Tag = "dd";
delBooks.Items.Add(item);

我在 ListBox 中看到的输出如下所示:

ListViewItem: {ss}

我怎样才能更正它以便在 ListBox 中显示 ss

您需要像 "delBooks.Items.Add(item.Text.toString());"

这样更改最后一行

ListBox 上的 DisplayMember 设置为 Text(作为字符串)。

ListBox 不存在像 ListViewItem 这样的对象。这是 ListBox 控件被 ListView 控件取代的原因之一。为了从 ListBox 控件中获得类似 ListViewItem 的功能,您必须实现自己的对象

class ListBoxItem
{
    public string Text { get; set; }
    public string Tag { get; set; }

    public ListBoxItem(string text, string tag)
    {
        this.Text = text;
        this.Tag = tag;
    }
}

要用您的自定义对象填充 ListBox,只需执行以下操作:

listbox.DisplayMember = "Text";
listbox.Items.Add(new ListBoxItem("ss", "dd"));

其中 ListBox.DisplayMember 属性 是要显示在 ListBox 中的自定义对象 属性 的名称用户。

如果您需要访问基于您的 ListBox 项目集合的自定义对象值,您可以进行简单的转换以检索这些值:

MessageBox.Show( ((ListBoxItem)listbox.Items[0]).Tag) );

其中.Tag属性就是我们之前设置的值"dd"

PS: 如果你像我一样坚持设计,这个方法也适用于 struct

编辑:如果你真的死定了使用 ListViewItem 你在技术上可以通过将 .DisplayMember 设置为(在你的情况下) .Text 属性 ListViewItem 对象