如何在C#和WinForms中将项添加到ListBox?

时间:2009-11-13 21:30:46

标签: c# winforms

我无法弄清楚如何在WinForms中向ListBox添加项目。

我试过了:

list.DisplayMember = "clan";
list.ValueMember = sifOsoba;

如何将ValueMember添加到包含int值的列表和DisplayMember的一些文字?

list.Items.add(?)

顺便说一下。我出于任何原因无法使用ListBoxItem

9 个答案:

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