如何在C#和WinForms中将项添加到ListBox?
我无法弄清楚如何在WinForms中向ListBox
添加项目。
我试过了:
list.DisplayMember = "clan"; list.ValueMember = sifOsoba;
如何使用int
值和DisplayMember
一些文本将ValueMember
添加到列表中?
list.Items.add(?)
顺便说一句。 我出于任何原因都无法使用ListBoxItem
。
list.Items.add(new ListBoxItem("name", "value"));
ListBox的内部(默认)数据结构是ListBoxItem 。
ListBoxItem是一个WPF类,而不是WinForms类。
对于WPF,请使用ListBoxItem。
对于WinForms,该项是Object类型,因此请使用以下方法之一:
1.为Object类型提供自己的ToString()方法。
2.使用DisplayMemeber和ValueMember数据绑定( 参见Kelsey的答案 )
在WinForms中, ValueMember
和DisplayMember
在数据绑定列表时使用。 如果您不是数据绑定,则可以将任意对象添加为ListItem
。
要抓住的是,为了显示该项,将在其上调用ToString()
。 因此,强烈建议您只将对象添加到ListBox,其中调用ToString()
将导致有意义的输出。
您可能想要查看此SO问题:
C# – WinForms – 加载ListBox的正确方法是什么?
DisplayMember和ValueMember通常仅在您对已定义这些属性的对象进行数据绑定时才有用。 然后,您需要添加该对象的实例。
例如:
public class MyObject { public string clan { get; set; } public int sifOsoba { get; set; } public MyObject(string aClan, int aSif0soba) { this.clan = aClan; this.sif0soba = aSif0soba; } public override string ToString() { return this.clan; } } .... list.Items.Add(new MyObject("hello", 5));
如果您手动绑定它,那么您可以使用护目镜提供的示例
我这样做的方式 – 使用格式Event
MyClass c = new MyClass(); listBox1.Items.Add(c); private void listBox1_Format(object sender, ListControlConvertEventArgs e) { if(e.ListItem is MyClass) { e.Value = ((MyClass)e.ListItem).ToString(); } else { e.Value = "Unknown item added"; } }
e.Value是显示文本
然后,您可以尝试将SelectedItem强制转换为MyClass,以访问您在那里拥有的任何内容。
另请注意,您可以在Items Collection中使用任何东西(无论如何都inheritance了对象(几乎所有东西))。
如果您只想添加一个字符串,简单的答案是:
ListBox.Items.Add("some text");
您必须创建ListBoxItem类型的项目并将其添加到Items集合:
list.Items.add( new ListBoxItem("clan", "sifOsoba"));
如果要添加整数,正如您在问题中所说,这将添加50(从1到50):
for (int x = 1; x <= 50; x++) { list.Items.Add(x); }
除非要添加具有要向用户显示的特定属性的对象,否则无需设置DisplayMember和ValueMember。 在你的例子中:
listbox1.Items.Add(new { clan = "Foo", sifOsoba = 1234 });