Я имею, это уже заполнило ComboBox и все, что я хочу сделать, должен установить его на определенный selectedItem знание его значения.
Я пробую это, но ничего не происходит:
comboPublisher.SelectedValue = livre.Editeur;
Рассмотрение того, что я уже реализовал, Равняется (..) метод в моем классе Editeur, этот путь:
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;
Мой Равняется методу:
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;
}
Вам необходимо установить Источники данных
в случае WinForm / ItemsSource
в случае WPF в свой cobobox, тогда вы сможете правильно использовать SelectedValue.
[Обновление] Вместо того, чтобы добавлять каждый элемент напрямую в поле со списком, вы должны создать коллекцию для хранения этих элементов, а затем установить ее в качестве источника данных (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";
вы создали новую реализацию Equals, которая скрывает реализацию в Object. Попробуйте объявить его с помощью public override bool
и посмотрите, поможет ли это.
Думаю, что в классе 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;
}