我无法弄清楚如何在WinForms中向ListBox
添加项目。
我试过了:
list.DisplayMember = "clan";
list.ValueMember = sifOsoba;
如何将ValueMember
添加到包含int
值的列表和DisplayMember
的一些文字?
list.Items.add(?)
顺便说一下。我出于任何原因无法使用ListBoxItem
。
答案 0 :(得分:29)
ListBoxItem是一个WPF类,而不是WinForms类。
对于WPF,请使用ListBoxItem。
对于WinForms,该项是Object类型,因此请使用以下方法之一:
1.为Object类型提供自己的ToString()方法
2.对DisplayMemeber和ValueMember(see Kelsey's answer)
答案 1 :(得分:15)
list.Items.add(new ListBoxItem("name", "value"));
ListBox的内部(默认)数据结构是ListBoxItem。
答案 2 :(得分:9)
在WinForms中,ValueMember
和DisplayMember
在数据绑定列表时使用。如果您不是数据绑定,则可以将任意对象添加为ListItem
。
要注意的是,为了显示该项目,将在其上调用ToString()
。因此,强烈建议您只将对象添加到ListBox,其中调用ToString()
将导致有意义的输出。
答案 3 :(得分:8)
答案 4 :(得分:6)
DisplayMember和ValueMember主要仅在您对已定义这些属性的对象进行数据绑定时才有用。然后,您需要添加该对象的实例。
e.g:
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));
如果您手动绑定它,则可以使用护目镜提供的示例
答案 5 :(得分: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中使用任何(从对象继承(几乎所有内容))。
答案 6 :(得分:3)
如果你只是想给它添加一个字符串,那么简单的答案就是:
ListBox.Items.Add("some text");
答案 7 :(得分:1)
您必须创建一个ListBoxItem类型的项目并将其添加到Items集合中:
list.Items.add( new ListBoxItem("clan", "sifOsoba"));
答案 8 :(得分:1)
如果你要添加整数,正如你在问题中所说,这将增加50(从1到50):
for (int x = 1; x <= 50; x++)
{
list.Items.Add(x);
}
除非要添加具有要向用户显示的特定属性的对象,否则无需设置DisplayMember和ValueMember。在您的示例中:
listbox1.Items.Add(new { clan = "Foo", sifOsoba = 1234 });