无法在 winforms 中将 ValueMember 设置为 listBox
can not set ValueMember to listBox in winforms
我无法将 ValueMember 设置为 listBox
我有class技能
class Skill
{
public string skillId { get; set; }
public string name { get; set; }
public Skill()
{
}
public Skill(string skillId, string name)
{
this.skillId = skillId;
this.name = name;
}
}
我将列表技能添加到列表
List<Skill> skills = new List<Skill>();
skills.Add(new Skill("1", "Long"));
skills.Add(new Skill("2", "Nhi"));
foreach (var item in skills)
{
listBox1.Items.Add(item);
listBox1.ValueMember = "skillId";
listBox1.DisplayMember = "name";
}
DisplayMember显示到listBox,但ValueMember没有设置到listBox
当我在 ListBox 中单击选定的项目并单击按钮时,我打印
Console.WriteLine("value id listbox1:" + listBox1.SelectedValue);
但是什么都不显示
value id listbox1:
答案是 - 您需要为此使用 DataSourse
属性
listBox1.ValueMember = "skillId";
listBox1.DisplayMember = "name";
listBox1.DataSource = skills; // where skills = List<Skill>
并确保最后设置 DataSourse
。它具有性能影响。
如果您需要删除项目,您可以使用 BindingList<Skill>
或不绑定到列表而是绑定到从该列表生成的数组 (LINQ) - skills.ToArray()
。然后你总是可以从内存中的列表中删除项目,然后再次调用 listBox1.DataSource = skills.ToArray()
。
我无法将 ValueMember 设置为 listBox
我有class技能
class Skill
{
public string skillId { get; set; }
public string name { get; set; }
public Skill()
{
}
public Skill(string skillId, string name)
{
this.skillId = skillId;
this.name = name;
}
}
我将列表技能添加到列表
List<Skill> skills = new List<Skill>();
skills.Add(new Skill("1", "Long"));
skills.Add(new Skill("2", "Nhi"));
foreach (var item in skills)
{
listBox1.Items.Add(item);
listBox1.ValueMember = "skillId";
listBox1.DisplayMember = "name";
}
DisplayMember显示到listBox,但ValueMember没有设置到listBox 当我在 ListBox 中单击选定的项目并单击按钮时,我打印
Console.WriteLine("value id listbox1:" + listBox1.SelectedValue);
但是什么都不显示
value id listbox1:
答案是 - 您需要为此使用 DataSourse
属性
listBox1.ValueMember = "skillId";
listBox1.DisplayMember = "name";
listBox1.DataSource = skills; // where skills = List<Skill>
并确保最后设置 DataSourse
。它具有性能影响。
如果您需要删除项目,您可以使用 BindingList<Skill>
或不绑定到列表而是绑定到从该列表生成的数组 (LINQ) - skills.ToArray()
。然后你总是可以从内存中的列表中删除项目,然后再次调用 listBox1.DataSource = skills.ToArray()
。