我已经填充了这个已经填充的ComboBox,我想要做的就是将它设置为特定的selectedItem,知道它的值。
我正在尝试这个,但没有任何反应:
comboPublisher.SelectedValue = livre.Editeur;
考虑到我已经在我的类Editeur中实现了Equals(..)方法,这样:
public bool Equals(IEditeur editeur)
{
return (this.Nom == editeur.Nom);
}
这是我填充我的ComboBox的方式:
foreach (Business.IEditeur editeur in _livreManager.GetPublishers())
{
comboPublisher.Items.Add(editeur);
}
有什么想法吗?
谢谢!
[编辑]:这似乎适用于:
comboPublisher.SelectedItem = livre.Editeur;
My Equals方法是:
public override bool Equals(object obj)
{
IEditeur editeur = new Editeur();
if (!(obj is System.DBNull))
{
editeur = (IEditeur)obj;
return (this.Nom == editeur.Nom);
}
return false;
}
答案 0 :(得分:3)
设置Text属性。
答案 1 :(得分:2)
如果是WPF,你需要在WinForm / DataSources
的情况下设置ItemsSource
到你的cobobox然后你可以正确使用SelectedValue。
<强> [更新] 强> 您应该创建集合来保存这些项目,然后将其设置为您的DataSource(WinForm)/ ItemsSource(WPF)
,而不是将每个项目直接添加到您的组合框中。foreach (Business.IEditeur editeur in _livreManager.GetPublishers())
{
//comboPublisher.Items.Add(editeur);
list.Add(editeur);
}
combobox.ItemsSource = editeur;
combobox.SelectedValuePath = "value_property_name";
combobox.DisplayMemberPath = "display_property_name";
答案 2 :(得分:2)
你已经创建了一个新的Equals实现,它隐藏了Object中的一个。尝试使用public override bool
声明它,看看是否有帮助。
答案 3 :(得分:0)
认为你还要在Editeur类中实现IEquatable,但是传递一个对象作为参数。像这样的东西。其余的代码都没问题。
public bool Equals(Editeur other)
{
return (this.Nom == other.Nom);
}
public override bool Equals(object obj)
{
if (obj is Editeur)
{
return Equals(obj as Editeur);
}
return false;
}