如何在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中, ValueMemberDisplayMember在数据绑定列表时使用。 如果您不是数据绑定,则可以将任意对象添加为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 });