我无法弄清楚如何ListBox在WinForms中添加项目.
我试过了:
list.DisplayMember = "clan";
list.ValueMember = sifOsoba;
Run Code Online (Sandbox Code Playgroud)
如何ValueMember使用int值和一些文本添加到列表中DisplayMember?
list.Items.add(?)
Run Code Online (Sandbox Code Playgroud)
顺便说一句.我不能ListBoxItem出于任何原因使用.
AZ.*_*AZ. 30
ListBoxItem是一个WPF类,而不是WinForms类.
对于WPF,请使用ListBoxItem.
对于WinForms,该项是Object类型,因此请使用以下方法之一:
1.为Object类型提供自己的ToString()方法.
2.使用DisplayMemeber和ValueMember数据绑定(参见Kelsey的答案)
mon*_*ksy 14
list.Items.add(new ListBoxItem("name", "value"));
Run Code Online (Sandbox Code Playgroud)
ListBox的内部(默认)数据结构是ListBoxItem.
在的WinForms,ValueMember而DisplayMember当数据绑定列表中被使用.如果您不是数据绑定,那么您可以添加任意对象作为ListItem.
要抓住的是,为了显示该项目,ToString()将在其上进行调用.因此,强烈建议您只将对象添加到ListBox,其中调用ToString()将导致有意义的输出.
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));
Run Code Online (Sandbox Code Playgroud)
如果您手动绑定它,则可以使用护目镜提供的示例
我这样做的方式 - 使用格式事件
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";
}
}
Run Code Online (Sandbox Code Playgroud)
e.Value是显示文本
然后,您可以尝试将SelectedItem强制转换为MyClass,以访问您在那里拥有的任何内容.
另请注意,您可以在Items Collection中使用任何(从对象继承(几乎所有东西)).