与ListViewItem一起使用时,C#ListBox显示的格式错误
这是我的代码,用与ListViewItem一起使用时,C#ListBox显示的格式错误,c#,listbox,listviewitem,C#,Listbox,Listviewitem,这是我的代码,用ListViewItem对象和items.Text和.Tag属性填充名为delBooks的ListBox ListViewItem item = new ListViewItem(); item.Text = "ss"; // Or whatever display text you need item.Tag = "dd"; delBooks.Items.Add(item); 我在列表框中看到的输出如下所示: ListViewItem:{ss} 如何更正此问题,使其在列表框中
ListViewItem
对象和items.Text
和.Tag
属性填充名为delBooks的ListBox
ListViewItem item = new ListViewItem();
item.Text = "ss"; // Or whatever display text you need
item.Tag = "dd";
delBooks.Items.Add(item);
我在列表框中看到的输出如下所示:
ListViewItem:{ss}
如何更正此问题,使其在列表框中显示ss
?您需要更改最后一行,如“delBooks.Items.Add(item.Text.toString());”您需要更改最后一行,如“delBooks.Items.Add(item.Text.toString());”将列表框上的显示成员
设置为文本
(作为字符串)。将列表框上的显示成员
设置为文本
(作为字符串)。列表框中不存在类似列表视图项
的对象。这是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.DisplayMember = "Text";
listbox.Items.Add(new ListBoxItem("ss", "dd"));
其中列表框的.DisplayMember
属性是要在列表框中显示给用户的自定义对象的属性名称
如果需要根据列表框
项集合访问自定义对象值,可以执行简单的转换来检索这些值:
MessageBox.Show( ((ListBoxItem)listbox.Items[0]).Tag) );
其中,.Tag
属性是我们前面设置的值“dd”
PS:如果你像我一样对设计一丝不苟,这种方法也适用于struct
编辑:如果您真的死心塌地地想使用ListViewItem
,从技术上讲,只需将.DisplayMember
设置为ListViewItem
对象的.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.DisplayMember = "Text";
listbox.Items.Add(new ListBoxItem("ss", "dd"));
其中列表框的.DisplayMember
属性是要在列表框中显示给用户的自定义对象的属性名称
如果需要根据列表框
项集合访问自定义对象值,可以执行简单的转换来检索这些值:
MessageBox.Show( ((ListBoxItem)listbox.Items[0]).Tag) );
其中,.Tag
属性是我们前面设置的值“dd”
PS:如果你像我一样对设计一丝不苟,这种方法也适用于struct
编辑:如果你真的死心塌地地想使用ListViewItem
,从技术上讲,你只需将.DisplayMember
设置为ListViewItem对象的.Text
属性,那么标签就不会被保存,使用ListViewItem的全部目的也就失去了。PS:如果你说的是“item.Text”,因为它已经是stringYeah是的,它可以不使用toString,你可以不使用它ı只需写一篇文章来解释add()方法的参数是stringuser6095732是正确的。ListBox.ObjectCollection类的Add()方法只接受一个对象实例;没有专门接受ListBoxItem实例的重载。无论您在其中填充什么对象实例,都会调用其ToString()方法以向用户显示。我认为您混淆了ListBox类和ListView类,后者更为奇特。嗯,这样标记就不会被保存,使用ListViewItem的整个目的也就失去了。PS:如果你说的是“item.Text”,因为它已经是stringYeah是的,它可以不使用toString,你可以不使用它ı只需写一篇文章来解释add()方法的参数是stringuser6095732是正确的。ListBox.ObjectCollection类的Add()方法只接受一个对象实例;没有专门接受ListBoxItem实例的重载。无论您在其中填充什么对象实例,都会调用其ToString()方法以向用户显示。我认为您混淆了ListBox类和ListView类,后者更为奇特。